标签: plsql

ORA-06550:在ASP.NET中的oracle包中调用函数时,参数的错误数量或类型错误

我在Oracle 10g数据库中的一个名为TEST的oracle包中有一个函数

FUNCTION GetEname(P_ename IN VARCHAR2) RETURN VARCHAR2 AS
retVal VARCHAR2(10);
BEGIN
retVal := SUBSTR(P_ename, 3, INSTR(P_ename, ':', 1, 2) - 3);

RETURN RetVal;

END GetEntDefIEIDFromEname;
Run Code Online (Sandbox Code Playgroud)

我创建了一个ASP.net页面,我在page_load中有以下代码:

String strResult = "";
        try
        {   
            oracleConn.ConnectionString = ConfigurationManager.ConnectionStrings["OracleDatabase"].ConnectionString;
            oracleConn.Open();
            OracleCommand orclCmnd = new OracleCommand();
            orclCmnd.Connection = oracleConn;
            orclCmnd.CommandText = "TEST.GetEname";
            orclCmnd.CommandType = CommandType.StoredProcedure;

            OracleParameter ename = new OracleParameter();
            ename.ParameterName = "ename";
            ename.OracleType = OracleType.VarChar;
            ename.Direction = ParameterDirection.Input;
            ename.Value = "0:490330";
            orclCmnd.Parameters.Add(ename);

            strResult = (String)orclCmnd.ExecuteOracleScalar();

            oracleConn.Close();
            oracleConn.Dispose();

            lbl1.Text = "Result of  " + …
Run Code Online (Sandbox Code Playgroud)

c# asp.net oracle plsql

1
推荐指数
1
解决办法
1万
查看次数

PL/SQL中的子程序事务行为

我在PL/SQL中有一个子程序

PRAGMA AUTONOMOUS_TRANSACTION
Run Code Online (Sandbox Code Playgroud)

指示.

这似乎是只有在这个子程序(有一组以相同的方式使用程序,但他们没有这个编译)在交易的变化调用这个程序是不可见的!

我不明白.

其他过程会查看在事务中所做的更改,但具有此pragma指令的人除外.能够单独提交是否会造成损失?

oracle plsql

1
推荐指数
2
解决办法
544
查看次数

如何在oracle SQL中从给定表创建随机25%的样本?

我给出了查询:

select dbms_random.value 
  from table;
Run Code Online (Sandbox Code Playgroud)

我如何获得25%的样本?

sql oracle plsql

1
推荐指数
1
解决办法
449
查看次数

如何将表名作为参数传递给存储过程?

是否可以rowtype为表名创建一个作为参数传递给a的表名,Stored-Procedure以及如何知道在DBMS_OUUTPUT.PUT_LINE()语句中处理它们的列.

最终用户可以提供任何用户名(架构)和表名

我想做一些如下所示的事情,但它不起作用.

 CREATE OR REPLACE PROCEDURE SP_PASS(USER_NAME VARCHAR2,TAB_NAME IN VARCHAR2)
 AS
    TYPE REF_CUR IS REF CURSOR;
    V_ARR REF_CUR;
    V_SQL VARCHAR(200);
    V_ROWTYPE USER_NAME.TAB_NAME%ROWTYPE;
 BEGIN
     V_SQL := 'SELECT * FROM '||USER_NAME||'.'||TAB_NAME;
     OPEN V_ARR FOR V_SQL;
     LOOP
     FETCH V_ARR INTO V_ROWTYPE;
     EXIT WHEN V_ARR%NOT FOUND;
     DBMS_OUTPUT.PUT_LINE(V_ROWTYPE.COL1||','||V_ROWTYPE.COL2||','||V_ROWTYPE.COL3);
     END LOOP;
     CLOSE V_ARR;
END;
Run Code Online (Sandbox Code Playgroud)

如果有可能请告诉我.

谢谢.

oracle plsql stored-procedures rowtype

1
推荐指数
1
解决办法
8900
查看次数

无法在PLSQL中调用带有参数的过程

无论我尝试过什么,我都会在消息中得到PLS-00103错误:

Error starting at line 1 in command:
DECLARE
  MyVar NUMBER(12,0);
BEGIN
  HISTORY.sp_CHS_Insert('OMSC01', 522‚ 'OMSC01' ,522 , 4, 'S14_DCSKOLIZE', 'CHYBA', MyVar);
END;
Error report:
ORA-06550: ?ádka 4, sloupec 38:
PLS-00103: Encountered the symbol "," when expecting one of the following:

   ) , * & = - + < / > at v is mod remainder not rem =>
   <exponent (**)> <> or != or ~= >= <= <> and or like like2
   like4 likec between || multiset member submultiset
 Symbol …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures

1
推荐指数
1
解决办法
1661
查看次数

在ORACLE中插入触发器

我是Oracle新手.我用这种语法创建了一个EVENT表:

CREATE TABLE Event
(event_id NUMBER (3) NOT NULL,
 event_date DATE NOT NULL,
 venue_id NUMBER (2) NOT NULL,
 concert_id NUMBER (3) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

我想创建一个触发器,以确保音乐会在8月份无法运行.我尝试了以下代码来创建触发器.触发器已成功创建,但在插入8月份的日期后,已插入.这不是假设的.

CREATE OR REPLACE TRIGGER check_date
  BEFORE INSERT ON event
DECLARE 
  event_date date;
BEGIN
  IF (to_char(event_date, 'mm') = 8) THEN
    raise_application_error(-20000, 'Concerts cannot be run during August');
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

sql oracle triggers plsql oracle10g

1
推荐指数
1
解决办法
984
查看次数

PL/SQL中的第一个程序

我正在尝试学习一些PL/SQL,但我的第一个程序遇到问题:

declare
    v_string_tx varchar2(256):='Hello World!';
begin  
    dbms_output.put_line(v_string_tx);
end;
Run Code Online (Sandbox Code Playgroud)

当我在SQL Developer中运行它时,我只收到一条消息"匿名块已完成".但是我没有得到'Hello World!' 正如所料.谁知道我错过了什么?

我尝试在此代码之前放置'set serveroutput'行,但是当我这样做并运行它时,没有任何反应(我甚至没有收到消息告诉我匿名块已经完成).

oracle plsql oracle-sqldeveloper

1
推荐指数
1
解决办法
1053
查看次数

为什么我得到ORA-01003:没有语句解析错误?

为什么我得到这个错误,没有解析语句是什么意思.

 ORA-01003: no statement parsed 
Run Code Online (Sandbox Code Playgroud)

这是代码:

PROCEDURE ORIGINAL_TABLE.UPDATE_GROUPS   IS
-- cursor loaded with the swam groups
CURSOR cursor1 IS
    SELECT ID, NEW_DESCRIPTION
    FROM NEW_TABLE.NEW_GROUP_TABLE@DB_LINK.X;

BEGIN
    FOR C1_REC IN cursor1 LOOP
        UPDATE
            ORIGINAL_TABLE."GROUPS"
        SET
            GROUP_ID = C1_REC.ID
        WHERE
            ORIGINAL_TABLE."GROUPS".DESCRIPTION = C1_REC.NEW_DESCRIPTION;

        IF (SQL%ROWCOUNT = 0) THEN
           INSERT INTO
                  ORIGINAL_TABLE.GROUPS("GROUP_ID", "DESCRIPTION")
           VALUES (C1_REC.ID, C1_REC.NEW_DESCRIPTION);
        END IF;

    END LOOP;

    EXCEPTION
    WHEN OTHERS THEN
         dbms_output.put_line(SQLERRM);
END;
Run Code Online (Sandbox Code Playgroud)

我尝试使用上面的代码尝试使用新表中的值更新旧表,如果新组不存在则插入它.

更新:已更改%ROWCOUNT> 0表示%ROWCOUNT = 0

oracle plsql stored-procedures

1
推荐指数
1
解决办法
3万
查看次数

如何在Oracle PL/SQL类型中定义无参数构造函数?

如何在Oracle PL/SQL类型中定义无参数构造函数?我试过这个:

create or replace type FooBar as object
(
    constructor function FooBar() return self as result
);

...

foo_bar := FooBar();
Run Code Online (Sandbox Code Playgroud)

但是类型声明中的空参数列表会引发PLS-00103.

sql oracle plsql

1
推荐指数
1
解决办法
3388
查看次数

为什么null <>"something"返回false

当我遇到一些让我对NULL值感到惊讶的事情时,我正在调试oracle数据库中的一个过程.任何人都可以解释为什么以下查询返回false,这里的非等式检查?

DECLARE
    vNullVariable VARCHAR2(2) := NULL;
    vVariable VARCHAR2(2) := 'Hi';
BEGIN
    IF vNullVariable <> vVariable THEN
        dbms_output.put_line( 'The variables are not equal' );
    ELSE
        dbms_output.put_line( 'The variables are equal' );
    END IF;
END;
Run Code Online (Sandbox Code Playgroud)

sql plsql oracle11g

1
推荐指数
1
解决办法
952
查看次数