以前一直是用SQL,现在换ORACLE发现很多语法不一样。
我在定义存储过程时定义了一个NODE IN,作为用户输入的节点号,然后再调用时,我写了:
SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = NODE'
执行的时候这里总报错,请问是我调用参数的格式有问题么?
...全文
5597打赏收藏
ORACLE中执行的SQL语句中的参数该如何调用?
以前一直是用SQL,现在换ORACLE发现很多语法不一样。 我在定义存储过程时定义了一个NODE IN,作为用户输入的节点号,然后再调用时,我写了: SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = NODE' 执行的时候这里总报错,请问是我调用参数的格式有问题么?
[Quote=引用 5 楼 codearts 的回复:]
SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = :NODE'; --这个:NODE是个绑定变量
execute immdate sql_exec using NODE; --这个NODE是个变量
[/Quote]
楼上本来已经说完了,不过发现执行部分少写了两个字母,可能写快了,呵呵。
SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = :NODE';
execute immediate sql_exec using NODE;
ORACLE内部语法,任意一个字符串前面假如英文冒号(字符串是什么没有关系),代表这个外部变量(和赋值无关),若用于动态SQL,要将参数传入就按照这些顺序使用USING 变量即可,若为两个参数就为:
SQL_EXEC := 'SELECT * FROM TABLE WHERE ID = :NODE AND name = :name1';
execute immediate SQL_EXEC using NODE,name;