SQL Plus 无法使用 Accept 将参数传递到我的存储过程

SQL Plus can't pass parameters to my stored procedure by using Accept

我遇到了一个问题,我无法将一些字符串从命令行传递到我的存储过程。我可以传递数字但不能传递 varchar 的..

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');

非常感谢任何帮助,谢谢!

编辑 1 添加了错误消息。

编辑 2

编辑 3

正如评论中所讨论的那样,问题出在这个 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 部分中的变量声明应以分号而不是逗号结尾,并且 execute 不应在 PL/SQL 块内使用。

该块应如下所示:

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;
/