我有14个相似的字段,我在每个字段上搜索字符串'A'。我希望通过“位置”字段之后的顺序
-- some set in order to remove a lot of useless text
def col='col01'
select '&col' "Fieldname",
&col "value",
position
from oneTable
where &col like '%A%'
/
-- then for the second field, I only have to type two lines
def col='col02'
/
...
def col='col14'
/
写下包含'A'的所有字段。问题是这些字段不按位置排序。
如果我在表之间使用UNION,我无法利用替换变量(& col),我必须在unix中编写一个bash才能使替换变回ksh。问题当然是数据库代码必须在此脚本中进行硬编码(连接并不容易)。
如果我使用带有OPEN的REFCURSOR,我无法将结果集分组在一起。我只有一个请求,不能成为当时的UNION。 (print refcursor1 union refcursor2; print refcursor1 + refcursor2引发异常,从refcursor1中选择* union select * from refcursor2,也不起作用。)
如何将结果连接成一个大的“REFCURSOR”?或者在我的请求的两个不同的运行('/')之间使用联合,比如在键入新的变量定义时保持请求?
感谢您的任何建议。
答案 0 :(得分:0)
这会回答你的问题吗?
CREATE TABLE #containingAValueTable
(
FieldName VARCHAR(10),
FieldValue VARCHAR(1000),
position int
)
def col='col01'
INSERT INTO #containingAValueTable
(
FieldName , FieldValue, position
)
SELECT '&col' "Fieldname",
&col "value",
position
FROM yourTable
WHERE &col LIKE '%A%'
/
-- then for the second field, I only have to type two lines
def col='col02'
INSERT INTO...
/
def col='col14'
/
select * from #containingAValueTable order by postion
DROP #containingAValueTable
但是我不完全确定你使用名为“col”的'替换变量'(我只有SQL Server来测试我的请求所以我使用了明确的字段名称)
编辑:抱歉'#'charcater,我们经常在SQL Server中使用它来获得临时性,我甚至不知道它是特定于SQL Server的(而且我认为在sql server中创建临时表是必需的)。无论如何,我很高兴我对你有用。