Oracle 存储过程问题 - IN 和 OUT 变量是无效标识符 [关闭]

     2023-03-27     36

关键词:

【中文标题】Oracle 存储过程问题 - IN 和 OUT 变量是无效标识符 [关闭]【英文标题】:Oracle Stored Procedure Issue - IN and OUT variables are invalid identifier [closed] 【发布时间】:2014-09-28 09:25:57 【问题描述】:

我正在尝试在 Oracle 中创建存储过程,当我运行命令 SQL> start g:\oracle\totalsales.sql 它显示如下错误

ERROR at line 6:
ORA-06550: line 6, column 47:
PL/SQL: ORA-00904: "CID": invalid identifier
ORA-06550: line 6, column 4:
PL/SQL: SQL Statement ignored
ORA-06550: line 20, column 3:
PLS-00201: identifier 'TOT' must be declared
ORA-06550: line 20, column 3:
PL/SQL: Statement ignored

这是我的存储过程代码。请看一下并建议我缺少的点。

CREATE OF REPLACE PROCEDURE TotalSales (CID IN NUMBER, TOT OUT NUMBER)
IS
    DECLARE
        P Sales.Price%TYPE;
        T NUMBER(10,2) := 0;

        CURSOR CUR_SALES IS
            SELECT Price FROM Sales WHERE EmployeeID = CID;

    BEGIN
        OPEN CUR_SALES;
        LOOP
            FETCH CUR_SALES INTO P;
            IF CUR_SALES%ROWCOUNT = 0 THEN
                RAISE_APPLICATION_ERROR(-20020, 'No data found.');
            END IF;
            EXIT WHEN CUR_SALES%NOTFOUND;
            T := T + P;
        END LOOP;
        CLOSE CUR_SALES;

        TOT := T;

    EXCEPTION
        WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);

END TotalSales;
/

【问题讨论】:

【参考方案1】:

改变

CREATE OF REPLACE

CREATE OR REPLACE

:)

并删除 DECLARE。 IS 隐含地标记了 DECLARE 块的开始。如果你想保留它,你需要用一个额外的 END 来关闭它 - 而且它还需要跟随开始。

【讨论】:

Jens Krogsboell - 早上浪费了我所有的时间来查看代码,并且每次都将 OF 读为 OR ......太愚蠢了。非常感谢你我的朋友。让我试试这个。 Jens Krogsboell - 是的 DECLARE 实际上不应该存在 OF 迫使我尝试修复可变错误的所有可能性:) 我知道 - 我们倾向于看到我们所期望的:)

Java 和 PostgreSQL 存储过程 - 返回注册为 out 参数,导致 in 参数出现问题

】Java和PostgreSQL存储过程-返回注册为out参数,导致in参数出现问题【英文标题】:JavaandPostgreSQLstoredprocedure-returnregisteredasoutparameter,causingissueswithinparameters【发布时间】:2011-01-1716:13:36【问题描述】:我正在尝试从Java应用程序调用... 查看详情

oracle————存储过程与函数

存储过程存储过程参数模式包括IN、OUT、INOUT。IN(默认参数模式):表示当存储过程别调用时,实参值被传递给形参;形参起变量作用,只能读该参数,而不能修改该参数。IN模式参数可以是变量或表达式。OUT:表示当存储过程被... 查看详情

oracle————存储过程与函数

存储过程存储过程参数模式包括IN、OUT、INOUT。IN(默认参数模式):表示当存储过程别调用时,实参值被传递给形参;形参起变量作用,只能读该参数,而不能修改该参数。IN模式参数可以是变量或表达式。OUT:表示当存储过程被... 查看详情

使用两个过程用 OUT 和 IN 参数进行简单计算,PL/SQL Oracle

】使用两个过程用OUT和IN参数进行简单计算,PL/SQLOracle【英文标题】:UsingtwoprocedurestomakesimplecalculationswithOUTandINparameters,PL/SQLOracle【发布时间】:2016-03-0615:38:51【问题描述】:我们被指派用Oracle的11gPL/SQL语言创建两个用于进行简... 查看详情

在存储过程中使用“out”ref_cursor 调用 Oracle 存储过程

】在存储过程中使用“out”ref_cursor调用Oracle存储过程【英文标题】:CallinganOraclestoredprocwith"out"ref_cursorwithinastoredproc【发布时间】:2014-03-2520:25:41【问题描述】:我试图基本上在存储过程中调用一组Oracle存储过程。只要我... 查看详情

oracle存储过程基本语法

参考技术A一:存储过程创建存储过程,需要有CREATEPROCEDURE或CREATEANYPROCEDURE的系统权限  删除存储过程,是过程的创建者或者拥有DROPANYPROCEDURE系统权限 修改存储过程,则只能是过程的创建者或者拥有ALTERANYPROCEDURE系统... 查看详情

使用 IN 参数调用 Oracle 存储过程时出现运行时错误 3151

】使用IN参数调用Oracle存储过程时出现运行时错误3151【英文标题】:Runtimeerror3151whencallingOraclestoredprocedurewithINparameter【发布时间】:2014-10-0908:52:01【问题描述】:我正在尝试在MSAccess中调用Oracle程序。程序有IN参数,我无法调用... 查看详情

无效的模式名称; Oracle 存储过程输入参数

】无效的模式名称;Oracle存储过程输入参数【英文标题】:InvalidPatternname;OracleStoredProcedureInputParameter【发布时间】:2014-07-3117:07:11【问题描述】:我有一个JDBC程序,它使用CallabaleStatement对象来设置和注册存储过程的IN/OUT参数。... 查看详情

Sybase IN 和 OUT 参数

...】:我对SybaseJDBC驱动程序如何处理带有IN和OUT混合参数的存储过程感到疯狂。看看这个简单的存储过程:CREATEORREPLACEPROCEDUREp(INi1INT,OUTo1INT,INi2INT,OUTo2INT)BEGINseto1=i1;seto2=i2;END这就 查看详情

使用 IN 和 OUT 参数更改密码过程 PLSQL

...上好!我正在尝试在PLSQL中创建一个可以更改用户密码的存储过程。我想检查当前密码是否正确,然后我将更新用户密码或打印错误。到目前为止,我想出的是以下代码。我正在努力使用不同的参数以及如何使用它们来检查密码... 查看详情

在 Oracle JDBC 中是不是可以批量存储过程调用和检索 OUT 参数?

】在OracleJDBC中是不是可以批量存储过程调用和检索OUT参数?【英文标题】:inOracleJDBCisitpossibletobatchstoredprocedurecallsandretrieveOUTparameters?在OracleJDBC中是否可以批量存储过程调用和检索OUT参数?【发布时间】:2012-06-0704:46:09【问题描... 查看详情

创建存储过程in,out,inout

in:输入参数,存储过程如果修改了参数值,那么不能被返回。out:输出参数,存储过程中修改了参数值,可以被返回。inout:输入参数,存储过程如果修改了参数值,可以被返回 注意参数格式: in  参数名字 ... 查看详情

javaspringjdbc调用存储过程(storedprocedure)输入(in)输出(out)参数

Spring提供了JDBC上调用数据库存储过程的各种抽象方法,本文主要介绍JavaSpingJDBC调用存储过程(StoredProcedure),并且带有输入(In)输出(Out)参数。原文地址:JavaSpringJDBC调用存储过程(StoredProcedure)输入(In)输出(Out)参数 查看详情

如何在oracle存储过程中执行动态sql语句

给你一个案例对这些,使用executeimmediate就可以了,存储过程和语句块也是一样的,自己改一改,没区别的。语法格式EXECUTE IMMEDIATE dynamic_string  [INTO define_variable[, define_variable]... | record]  [USING [IN | OUT | IN OUT] bind_argument... 查看详情

pl sql函数和过程中可以使用多少个IN、OUT和IN OUT参数? [关闭]

】plsql函数和过程中可以使用多少个IN、OUT和INOUT参数?[关闭]【英文标题】:HowmanyIN,OUTandINOUTparameterscanbeusedinplsqlfunctionandprocedure?[closed]【发布时间】:2016-08-1907:02:06【问题描述】:我想知道一个函数中可以使用多少个IN、OUT和INOU... 查看详情

Oracle 存储过程 OUT 参数

】Oracle存储过程OUT参数【英文标题】:OraclestoredprocedureOUTparameters【发布时间】:2009-05-2110:11:44【问题描述】:我有一个带有INOUT参数的存储过程,声明如下:createorreplacePROCEDURERIFATT_SEGN0_INS(pIdRifattSegn0inOUTNUMBER,pNumDossierINVARCHAR2,pNum... 查看详情

mysql---存储过程复习(代码片段)

存储过程存储过程特点基本语法格式关于存储过程的参数1.输入参数2.输出参数3.输入参数输出参数可以一起使用4.INOUT输入输出参数,具有in和out的双重功能示例1.使用in参数2.创建带输入和输出参数的存储过程注意3.使用INOUT参... 查看详情

存储过程

...表中循环添加记录为例: 语法:create[orreplace]procedure存储过程名(arg1{in|out|inout}data_type,arg2{in|out|intoutdata_type,...)is|as定义部分begin执行部分[exception...]end; in,out,inout是形参的模式in:实参传递给形参,值只能读不能写out:实参... 查看详情