相关疑难解决方法(0)

如何从返回引用游标的Oracle过程中获得格式良好的结果?

在MS SQL Server中,如果我想检查存储过程的结果,我可能会在Management Studio中执行以下操作.

--SQL SERVER WAY
exec sp_GetQuestions('OMG Ponies')
Run Code Online (Sandbox Code Playgroud)

结果窗格中的输出可能如下所示.

ID    Title                                             ViewCount   Votes 
----- ------------------------------------------------- ---------- --------
2165  Indexed View vs Indexes on Table                  491         2  
5068  SQL Server equivalent to Oracle’s NULLS FIRST     524         3 
1261  Benefits Of Using SQL Ordinal Position Notation?  377         2 

(3 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

无需编写循环或PRINT语句.

要在Oracle中执行相同的操作,我可能会在SQL Developer中执行以下匿名块

--ORACLE WAY
    DECLARE
        OUTPUT  MYPACKAGE.refcur_question;
        R_OUTPUT MYPACKAGE.r_question;
        USER    VARCHAR2(20);

BEGIN

  dbms_output.enable(10000000);
  USER:= 'OMG Ponies';
  recordCount := 0;



  MYPACKAGE.GETQUESTIONS(p_OUTPUT => OUTPUT, 
  p_USER=> USER, 

  ) ;




  DBMS_OUTPUT.PUT_LINE('ID | …
Run Code Online (Sandbox Code Playgroud)

oracle oracle10g oracle-sqldeveloper

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

Oracle包创建错误

我创建了一个包和一个包体,如下所示:

Create or replace Package pkg_1
as
procedure main(param1 varchar2, param2 varchar2, param3 int);
procedure one(param1 varchar2, param2 varchar2);
procedure two(param1 varchar2, param2 varchar2);
end pkg_1;
/

create or replace package body pkg_1
as
procedure main (param1 varchar2, param2 varchar2, param3 int)
is
v_sql_script varchar2(1000);
begin
case param3
when 1 then
v_sql_script := 'begin exec pkg_1.one(:param1,:param2); end;';
execute immediate v_sql_script using param1, param2;
end case;
end;
Run Code Online (Sandbox Code Playgroud)

现在,当我使用以下语句执行包过程时:

exec pkg_1.main('p1','p2',1);

I got the following error:

ORA-06550: line 1, column 12:
PLS-00103: …
Run Code Online (Sandbox Code Playgroud)

oracle oracle10g oracle11g

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