Oracle“ORA-01008”错误。变量未绑定

时间:2013-11-06 05:39:53

标签: sql oracle plsql

我刚开始使用PL/SQL并编写一个简单的基本代码。我没有得到,代码有什么问题。

DECLARE
role_test varchar(40) := 'Programmer';
BEGIN
update veer_test set project_id=1008420 where role=:role_test;
END;

我收到ORA-01008: not all variables bound

早些时候我试过了:

DECLARE
role varchar(40) := 'Programmer';
BEGIN
update veer_test set project_id=1008420 where role=role;
END;

这更新了表格的所有行。这是合理的。但是,如果我想使用与表中相同的变量名称,该怎么办?我也尝试过:

role=:role;

但同样的错误ORA-01008

4 个答案:

答案 0 :(得分:3)

尝试:

DECLARE
role_test varchar(40) := 'Programmer';
BEGIN
update veer_test set project_id=1008420 where role=role_test;
END;

答案 1 :(得分:1)

如果您想使用与列名相同的变量名,可以试试这样的程序,

CREATE OR REPLACE PROCEDURE role_p(role VARCHAR2)
IS
BEGIN
     UPDATE veer_test SET project_id=1008422 WHERE role = role_p.role;
END;

执行:

EXECUTE role_p('Programmer');

答案 2 :(得分:1)

您可以咨询v$reserved_words,以确定您是否可以在PL / SQL中使用ROLE等特定字词:

select res_attr from v$reserved_words where keyword = 'ROLE';

此语句返回一行的事实表明确实ROLE确实是一个关键字,因此不能在PL / SQL中使用。但是,res_attr_N,表示该字可以在表格中用于属性名称。

另见v$reserved_words on tahiti.oracle.com

答案 3 :(得分:0)

你试试

DECLARE
role_test varchar(40) := 'Programmer';
BEGIN
update veer_test set project_id=1008420 where role=role_test;
END;

愿这项工作