【发布时间】:2021-04-15 14:29:58
【问题描述】:
我有一个固定的执行即时叙述。里面的sql_text只会带一个参数做一个简单的语法查询
例子
EXECUTE IMMEDIATE sql_text USING SN RETURNING INTO MSG;
sql_text 是可以交替使用的搜索语句
sql_txt = 'select count(1) from productDetails where ID = :parameter1'
原来EXECUTE IMMEDIATE只会带一个参数来执行sql_text。这次我想引入多个参数来执行sql_text,而不影响现有的只有一个参数的sql_text操作。
因此,许多尝试都失败了。错误的SQL如下
DECLARE
SQL_TEXT VARCHAR2(1000);
MSG VARCHAR2(500);
SN VARCHAR2(500) := parameter1/parameter2;
BEGIN
sql_text := '
DECLARE
parameters VARCHAR2(50);
parameter1 VARCHAR2(50);
parameter2 VARCHAR2(50);
sql_txt VARCHAR2(1000);
BEGIN
parameters := :SN;
parameter1 := substr(parameters,0,10);
parameter2 := substr(parameters,11,10);
sql_txt = ''select count(1) from productDetails where ID = :parameter1
AND NUMBER = :parameter2''
EXECUTE IMMEDIATE sql_txt USING parameter1 RETURNING INTO MSG;
END;';
EXECUTE IMMEDIATE sql_text USING SN RETURNING INTO MSG;
DBMS_OUTPUT.put_line(MSG);
END;
我尝试将多个参数放在一个参数中。
SN VARCHAR2(500) := parameter1/parameter2;
从sql_text中取出参数并使用
parameters := :SN;
parameter1 := substr(parameters,0,10);
parameter2 := substr(parameters,11,10);
它不断尝试并失败
数据库版本:oracle database 19c
寻求帮助
谢谢
【问题讨论】:
-
发布任何错误消息。请注意,您的内部 exec 内部的字符串直接引用外部外部 SQL 的变量。这将如何工作?
-
错误信息需要等到明天才能提供。
标签: oracle stored-procedures plsql dynamic-sql oracle19c