Sql 埃卢西安旗帜API

Sql 埃卢西安旗帜API,sql,oracle,plsql,Sql,Oracle,Plsql,我是新的旗帜学生api。当我运行下面的代码时,它会给我一个错误: ORA-00907:缺少右括号 call sb_course.f_query_one( p_subj_code => "LMA", p_crse_numb => "400", p_eff_term => 201203 ); 提前感谢您抽出时间。使用单引号应该可以。您确定此线路上发生了错误吗?你在评论中写的看起来不错

我是新的旗帜学生api。当我运行下面的代码时,它会给我一个错误: ORA-00907:缺少右括号

call sb_course.f_query_one(
            p_subj_code => "LMA",
            p_crse_numb => "400",
            p_eff_term  => 201203
            );

提前感谢您抽出时间。

使用单引号应该可以。您确定此线路上发生了错误吗?你在评论中写的看起来不错

罢工


你不想用“呼叫”这个词。如果您是用pl/sql编写的,那么请删除该单词。如果您是用sql编写的,那么请改用“exec”

小代码段不会产生错误
ORA-00907:missing
右括号
。该错误可能来自于 代码片段,或在通过调用
f\u query\u 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.
下面,我展示

  • 调用中的值周围的双引号无效。在里面 Oracle双引号是一种指定不需要 遵循普通标识符规则。本例中的错误是 ORA-06576:不是有效的函数或过程名称
  • 调用过程时使用单引号是有效的
  • 调用函数时,需要指定
    into
    子句 接收返回值。否则,错误ORA-06576:无效 将引发函数或过程名称
  • 在任何情况下都不是ORA-00907:缺少右括号 请查看更广泛的上下文以找到错误的原因

    下面是与SQL*Plus的交互<代码>SQL>
    是提示 新命令,下面的行带有数字表示其他行 为了那一个命令。其他所有内容都由SQL*Plus打印

    使来自
    dbms\u输出的输出可见

    SQL> set serveroutput on size unlimited
    
    创建一个过程
    f\u query\u one
    从您的 样品类型是根据传入的值猜测的 样品注意,我没有
    SB\u课程
    schema。那将是一个巨大的挑战 与下面的示例和您的代码片段不同

    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(p_subj_code => 'LMA'
      2      , p_crse_numb => '400'
      3      , p_eff_term  => 201203);
    Hello World!
    
    Call completed.
    
    删除该过程并创建一个名为
    f\u query\u 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)
    
    SQL> print so
    
    SO
    --------------------------------
    Hello World!
    
    子句中添加一个
    ,将值保存在bind变量中

    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> var so varchar2(20)
    
    SQL> print so
    
    SO
    --------------------------------
    Hello World!
    

    我甚至试着称某人为“课程”或“查询一”(p_subc_code=>LM',p_crse_numb=>600P',p_eff_term=>201300)并给出相同的错误消息。请告诉我这是否正确。:)我可以说几点。
    EXEC[UTE]
    不是SQL或PL/SQL单词,而是SQL*Plus命令:。“
    CALL
    是用于执行例程的SQL语句。”。我个人从未使用过
    呼叫
    ,尽管我的同事使用过。@BrianMcGinity我也尝试过单引号,但它给了我同样的错误。@ShannonSeverance谢谢你提供的信息。我尝试在没有调用
    的情况下调用该过程,但仍然遇到相同的错误。这是一个过程吗?因为
    f
    有时用作函数的前缀。