ORACLE中执行的SQL语句中的参数该如何调用?
以前一直是用SQL,现在换ORACLE发现很多语法不一样。
我在定义存储过程时定义了一个NODE IN,作为用户输入的节点号,然后再调用时,我写了:
SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = NODE'
执行的时候这里总报错,请问是我调用参数的格式有问题么?
------解决方案--------------------这问题描述得没两句看懂了,呵呵。。。
你是换ORACLE是吧,以前用SQL SERVER吧,你是说定义了存储过程嘛?然后参数为:NODE,然后是传入参数是吧,那么存储过程调用方式和普通SQL是不一样的。
首先你是在那里调用的,应用程序还是直接调用数据库的,应用程序需要使用(如JAVA程序):
{call 过程名称(?,?)}
如果使用PL/SQL代码段块调用(打印输出信息,查看第三方工具提供的OUTPUT区):
BEGIN
过程名称(参数);
END;
如果是在SQL命令行下这样执行(也可以直接用EXEC即可):
SQL>execute 过程名称(参数);
如果有打印输出信息,在调用过程前,先执行命令:set serveroutput on;
调用过程报错,如果错误你觉得是些“鸟文”(几乎人类看不懂的那种),有两种可能性:
1、过程有问题
2、内部运行时调用了动态SQL,动态SQL执行时报错。
若运行时报错报ORA-数字错误号码,则是抛出的异常信息,细节在说下去能说到天亮了。
------解决方案--------------------
------解决方案--------------------SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = :NODE'; --这个:NODE是个绑定变量
execute immdate sql_exec using NODE; --这个NODE是个变量
------解决方案--------------------