【发布时间】:2014-09-17 02:08:55
【问题描述】:
我有这个代码:
declare
instr varchar2(20);
num_no number;
begin
select AR_ID, ID
into instr, num_no
from quelle_match
where ID = 1;
execute immediate 'CREATE or replace VIEW interm2 AS
SELECT AR_ID, kurs,
((TO_CHAR(to_date(di.kursdatum,''dd.mm.yyyy''),''YYYYMMDD''))+ (TO_CHAR(to_date(di.verfall,''dd.mm.yyyy''),''YYYYMMDD''))) AS dumdate
FROM daten_import di
where di.AR_ID = '||instr||'';
-- where di.AR_ID = ''GXIndex''';
end ;
我收到错误 b/c instr is not valid。当我用实际的字符串 GXIndex 替换变量时,代码就可以工作了。它也适用于数字作为变量,但不适用于字符串。这是为什么?
【问题讨论】:
-
您是否尝试过 EXECUTE IMMEDIATE USING ? stackoverflow.com/questions/7816402/…
-
当您为
execute immediate构造字符串时,您的instr-variable 很可能没有被正确引用。 -
如果
instr在execute immediate之前,使用打印语句打印出值。我认为@user272735 可能是在正确的轨道上。
标签: sql plsql execute-immediate