我是横幅学生api的新人。当我运行下面的代码时,它给了我一个错误: ORA-00907:缺少右括号
call sb_course.f_query_one(
p_subj_code => "LMA",
p_crse_numb => "400",
p_eff_term => 201203
);
先谢谢你的时间。
答案 0 :(得分:3)
小代码段不会产生错误ORA-00907: missing
right parenthesis
。该错误要么来自于周围的环境
代码段,或通过调用f_query_one
来运行代码。
下面,我展示
into
子句
收到返回值。否则错误 ORA-06576:无效
将引发功能或程序名称。在任何情况下 ORA-00907:缺少右括号 请查看更广泛的上下文,找出错误原因。
以下是与SQL * Plus的交互。 SQL>
是一个提示
新命令,下面的行和其他行的数字
对于那一个命令。其他所有内容都由SQL * Plus打印。
使dbms_output
包的输出可见。
SQL> set serveroutput on size unlimited
创建一个程序f_query_one
,从你的增益中获取
样品。根据您传递的值猜测类型
样品。请注意,我没有SB_COURSE
架构。那将是一个
与我下面的示例和您的代码段不同。
SQL> create or replace procedure f_query_one(p_subj_code in varchar2
2 , p_crse_numb in varchar2
3 , p_eff_term in varchar2)
4 is begin
5 dbms_output.put_line('Hello World!');
6 end f_query_one;
7 /
Procedure created.
在您的问题中发帖,并发现双引号没有 工作
SQL> call f_query_one(
2 p_subj_code => "LMA",
3 p_crse_numb => "400",
4 p_eff_term => 201203
5 );
p_subj_code => "LMA",
*
ERROR at line 2:
ORA-06576: not a valid function or procedure name
使用单引号拨打电话。作品!
SQL> call f_query_one(p_subj_code => 'LMA'
2 , p_crse_numb => '400'
3 , p_eff_term => 201203);
Hello World!
Call completed.
删除该过程并创建一个名为f_query_one
的函数。
SQL> drop procedure f_query_one;
Procedure dropped.
SQL> create or replace function f_query_one(p_subj_code in varchar2
2 , p_crse_numb in varchar2
3 , p_eff_term in varchar2) return varchar2
4 is begin
5 return 'Hello World!';
6 end f_query_one;
7 /
Function created.
调用该功能。但是这个功能确实存在,为什么它没有呢?
SQL> call f_query_one(p_subj_code => 'LMA'
2 , p_crse_numb => '400'
3 , p_eff_term => 201203);
call f_query_one(p_subj_code => 'LMA'
*
ERROR at line 1:
ORA-06576: not a valid function or procedure name
创建绑定变量。 var
是SQL * Plus命令。它是其中的一部分
既不是SQL语言,也不是PL / SQL语言。
SQL> var so varchar2(20)
添加into
子句以保存绑定变量中的值。
SQL> call f_query_one(p_subj_code => 'LMA'
2 , p_crse_numb => '400'
3 , p_eff_term => 201203) into :so;
Call completed.
打印绑定变量。 print
是SQL * Plus命令。它是其中的一部分
既不是SQL语言,也不是PL / SQL语言。
SQL> print so
SO
--------------------------------
Hello World!
答案 1 :(得分:1)
使用单引号应该有效。你确定错误发生在这条线上吗?你在评论中写的内容看起来不错。
罢工......
您不想使用“call”这个词。如果您使用pl / sql编写,则删除该单词。如果你在sql中写这个,那么使用“exec”代替。