我刚开始使用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
答案 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
,表示该字可以在表格中用于属性名称。
答案 3 :(得分:0)
你试试
DECLARE
role_test varchar(40) := 'Programmer';
BEGIN
update veer_test set project_id=1008420 where role=role_test;
END;
愿这项工作