我遇到了问题,我无法将一些字符串从命令行传递到我的存储过程。我可以通过数字,但我无法通过varchar' s。
accept nr1 char prompt 'Name: ';
accept nr2 char prompt 'Surname: ';
accept nr3 char prompt 'Username: ';
accept nr4 char prompt 'GroupCode: ';
execute CreateUsers('&nr1','&nr2','&nr3','&nr4');
我尝试过使用此
accept nr1 prompt 'Name: ';
accept nr2 prompt 'Surname: ';
accept nr3 prompt 'Username: ';
accept nr4 prompt 'GroupCode: ';
declare
p_name varchar(30) := '&nr1',
p_surname varchar(30) := '&nr2',
p_Username varchar(30) := '&nr3',
p_GroupCode varchar(30) := '&nr4';
begin
execute CreateUsers(p_name,p_surname,p_username,p_GroupCode);
end;
/
该存储过程具有varchar2
个参数,并且可以使用类似
execute CreateUsers ('anne','123','annie','DBA');
感谢您的帮助,谢谢!
答案 0 :(得分:1)
正如评论中所讨论的,问题出现在这个PL / SQL块中:
declare
p_name varchar(30) := '&nr1',
p_surname varchar(30) := '&nr2',
p_Username varchar(30) := '&nr3',
p_GroupCode varchar(30) := '&nr4';
begin
execute CreateUsers(p_name,p_surname,p_username,p_GroupCode);
end;
/
块的declare
部分中的变量声明应以分号结束,而不是逗号,并且不应在PL / SQL块中使用execute
。
该块应如下所示:
declare
p_name varchar(30) := '&nr1';
p_surname varchar(30) := '&nr2';
p_Username varchar(30) := '&nr3';
p_GroupCode varchar(30) := '&nr4';
begin
CreateUsers(p_name,p_surname,p_username,p_GroupCode);
end;
/