【问题标题】:Why do I get an error in calling this procedure?为什么我在调用此过程时会出错?
【发布时间】:2021-07-26 17:32:02
【问题描述】:

我有一个名为 student_id 的过程

 procedure student_id ( v_surname  in varchar2,  
                        v_name in varchar2,  
                        v_date_birth in varchar2,
                        v_gender in varchar2,
                        v_state in varchar2)  is l_student_id varchar2;
 begin
 l_student_id :=  par_surname(v_surname)       ||'-'||
                  par_name(v_name)             ||'-'||
                  par_date_birht(v_date_birth) ||'-'||
                  par_gender(v_gender)         ||'-'||
                  par_state(v_state);
 dbms_output.put_line('Student ID :  ' ||  l_student_id);
end student_id;

在我写下这些值之后我的预期输出应该是什么:

(学生编号:JOHN-SMITH-170692-M-CALIFORNIA)

我得到的错误:

Error with beginning of line: 291  in the command -
procedure cod_fiscale ( v_surname  in varchar2,
Report error -
unknown command   

Error with beginning of line : 292 in the command -
                        v_name  in varchar2,
Report error -
unknown command  

Error with beginning of line : 293 in the command -
                        v_date_birth  in varchar2,
Report error -
unknown command    

Error with beginning of line : 294 in the command -
                        v_gender  in varchar2,
Report error -
unknown command    

SP2-0044:to get the list of known commands, enter HELP
and enter EXIT to exit.
Error with beginning of line : 295 in the command -
                        v_state  in varchar2) is l_student_id varchar2;
Report error -
unknown command    

Error with beginning of line : 296 in the command -
begin
 l_student_id :=  par_surname(v_surname)       ||'-'||
                  par_name(v_name)             ||'-'||
                  par_date_birht(v_date_birth) ||'-'||
                  par_gender(v_gender)         ||'-'||
                  par_state(v_state);
 dbms_output.put_line('Student ID :  ' ||  l_student_id);
end student_id;
Report error -
ORA-06550: line 9, column 25:
PLS-00103: Found symbol   "" 
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

我粗略地翻译了我得到的错误,因为它是另一种语言。

*注意:这不是一个独立的过程,这段代码和我之前的问题有关。

发现于:How to write a PL/SQL procedure with x input parameters and input/ouput of x parameters combined*

我的错误是什么?错误的原因是什么?

【问题讨论】:

  • 如果这是一个独立的过程,你需要在PROCEDURE这个词前面添加一个CREATE(或者,更可能是一个CREATE OR REPLACE
  • 我忘了说,它不是一个独立的程序。有 5 个功能,这个程序“联合”了 5 个功能。看得更好,我将链接我之前与此相关的问题。 stackoverflow.com/questions/67372067/…

标签: plsql plsqldeveloper plsql-package


【解决方案1】:

没有看到你的包裹的其余部分,我可以发现一个问题:

procedure student_id ( v_surname  in varchar2,  
                        v_name in varchar2,  
                        v_date_birth in varchar2,
                        v_gender in varchar2,
                        v_state in varchar2)  is
  l_student_id varchar2; -- you need to declare the length of your variable
begin
  ...

你已经声明了你的变量的类型,但你还没有说它需要多长时间。它应该是这样的:

l_student_id varchar2(400);

尽管您应该将 400 更改为将存储在该变量中的值的预期最大长度的正确值。

【讨论】:

  • 开始后我也得到一个错误,我得到这个: Errore(398,23): PLS-00103:Found symbol "name" 而不是 i: 。 ( * % & = - + ; at in is mod 余数 not rem or != or ~= >= and or like2 like4 likec between || multiset member submultiset Il simbolo "." 它被替换为允许名称继续(?)我粗略地翻译了它,我得到所有下一个参数的错误(姓氏,性别,ecc)
  • 我建议您编辑您的问题以提供完整的软件包列表。我无法接受您提供的内容并自己进行调试,因为没有足够的上下文可用。新问题可能在您的包裹中的其他地方。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2021-08-10
相关资源
最近更新 更多