如何在oracle sql developer中运行存储过程?

时间:2021-07-05 01:08:33

I'm trying to run this stored procedure

我试着运行这个存储过程。

DECLARE
  P_TICKER_SERIAL VARCHAR2(200);
  P_SECTOR_CODE   VARCHAR2(200);
  P_SOURCE_ID     VARCHAR2(200);
  P_COUNTRY_CODE  VARCHAR2(200);
  P_FILTER_TYPE   NUMBER;
  CUR_OUT         SYS_REFCURSOR;
  dbUserTable     DBUSER%ROWTYPE;
BEGIN
  P_TICKER_SERIAL :='14232';
  P_SECTOR_CODE   := '15';
  P_SOURCE_ID     := 'TDWL';
  P_COUNTRY_CODE  := 'SA';
  P_FILTER_TYPE   := 1;

  PKG_name.GET_user(
    P_TICKER_SERIAL => P_TICKER_SERIAL,
    P_SECTOR_CODE   => P_SECTOR_CODE,
    P_SOURCE_ID     => P_SOURCE_ID,
    P_COUNTRY_CODE  => P_COUNTRY_CODE,
    P_FILTER_TYPE   => P_FILTER_TYPE,
    CUR_OUT         => CUR_OUT
  );
  open CUR_OUT;
  LOOP
    FETCH CUR_OUT INTO dbUserTable;
    dbms_output.put_line(dbUserTable.email);
  END LOOP;
  CLOSE CUR_OUT;
END;
 /

But it gives me this error

但它给出了这个误差。

Error report:
ORA-06550: line 8, column 15:
PLS-00201: identifier 'DBUSER' must be declared
ORA-06550: line 8, column 15:
PL/SQL: Item ignored
ORA-06550: line 24, column 2:
PLS-00382: expression is of wrong type
ORA-06550: line 24, column 2:
PL/SQL: SQL Statement ignored
ORA-06550: line 26, column 24:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 26, column 5:
PL/SQL: SQL Statement ignored
ORA-06550: line 27, column 28:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 27, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Any one knows what is wrong ? Thanks.

谁知道怎么回事?谢谢。

2 个解决方案

#1


38  

Try to execute the procedure like this,

试着执行这样的程序,

var c refcursor;
execute pkg_name.get_user('14232', '15', 'TDWL', 'SA', 1, :c);
print c;

#2


0  

Consider you've created a procedure like below.

考虑您已经创建了如下的过程。

CREATE OR REPLACE PROCEDURE GET_FULL_NAME like
(
  FIRST_NAME IN VARCHAR2, 
  LAST_NAME IN VARCHAR2,
  FULL_NAME OUT VARCHAR2 
) IS 
BEGIN
  FULL_NAME:= FIRST_NAME || ' ' || LAST_NAME;
END GET_FULL_NAME;

In Oracle SQL Developer, you can run this procedure in two ways.

在Oracle SQL Developer中,可以通过两种方式运行此过程。

1. Using SQL Worksheet

1。使用SQL表

Create a SQL Worksheet and write PL/SQL anonymous block like this and hit f5

创建一个SQL工作表,并编写这样的PL/SQL匿名块,然后按f5。

DECLARE
  FULL_NAME Varchar2(50);
BEGIN
  GET_FULL_NAME('Foo', 'Bar', FULL_NAME);
  Dbms_Output.Put_Line('Full name is: ' || FULL_NAME);
END;

2. Using GUI Controls

2。使用GUI控件

  • Expand Procedures

    扩展程序

  • Right click on the procudure you've created and Click Run

    右键单击已创建的已创建并单击Run。

  • In the pop-up window, Fill the parameters and Click OK.

    在弹出窗口中,填充参数并单击OK。

Cheers!

干杯!

#1


38  

Try to execute the procedure like this,

试着执行这样的程序,

var c refcursor;
execute pkg_name.get_user('14232', '15', 'TDWL', 'SA', 1, :c);
print c;

#2


0  

Consider you've created a procedure like below.

考虑您已经创建了如下的过程。

CREATE OR REPLACE PROCEDURE GET_FULL_NAME like
(
  FIRST_NAME IN VARCHAR2, 
  LAST_NAME IN VARCHAR2,
  FULL_NAME OUT VARCHAR2 
) IS 
BEGIN
  FULL_NAME:= FIRST_NAME || ' ' || LAST_NAME;
END GET_FULL_NAME;

In Oracle SQL Developer, you can run this procedure in two ways.

在Oracle SQL Developer中,可以通过两种方式运行此过程。

1. Using SQL Worksheet

1。使用SQL表

Create a SQL Worksheet and write PL/SQL anonymous block like this and hit f5

创建一个SQL工作表,并编写这样的PL/SQL匿名块,然后按f5。

DECLARE
  FULL_NAME Varchar2(50);
BEGIN
  GET_FULL_NAME('Foo', 'Bar', FULL_NAME);
  Dbms_Output.Put_Line('Full name is: ' || FULL_NAME);
END;

2. Using GUI Controls

2。使用GUI控件

  • Expand Procedures

    扩展程序

  • Right click on the procudure you've created and Click Run

    右键单击已创建的已创建并单击Run。

  • In the pop-up window, Fill the parameters and Click OK.

    在弹出窗口中,填充参数并单击OK。

Cheers!

干杯!