请跟我一点
我想运行一个select
语句,结果应该看起来就像我自己运行select
我自己的结果应该是datagrid
,而不是dbms_output
?< / p>
DECLARE
sql_stmt VARCHAR2(200);
sql_stmt2 VARCHAR2(200);
ids VARCHAR2(200);
BEGIN
ids := 5;
sql_stmt:='select query from query_table where id = :id';
EXECUTE IMMEDIATE sql_stmt using ids into sql_stmt2;
EXECUTE IMMEDIATE sql_stmt2;
END;
但这给了我一个
ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 8
第8行
EXECUTE IMMEDIATE sql_stmt2
答案 0 :(得分:0)
我的计数行8是EXECUTE IMMEDIATE sql_stmt using ids into sql_stmt2;
。
sql_stmt2定义为VARCHAR2(200)。
我会说你的查询返回一个超过200个字符的字符串。
答案 1 :(得分:0)
1)您不需要动态SQL来执行您的第一个语句 - 所有标识符在执行时都是已知的。静态SQL,如
从query_table中选择查询,其中id = p_ds;
其中p_id是一个参数是相关的选择。
2)第8行指出表达式
使用id进入sql_stmt2 EXECUTE IMMEDIATE sql_stmt;
语法错误,INTO子句必须是第一个:
EXECUTE IMMEDIATE sql_stmt INTO sql_stmt2 USING ID;
请参阅Oracle文档: http://docs.oracle.com/cd/B13789_01/appdev.101/b10807/13_elems017.htm
要在您的问题中获得完整的答案,请在表格中提供真实的代码和数据示例。
答案 2 :(得分:-1)
你能试试吗
ids number;
或
ids :='5';