【问题标题】:How to execute a stored procedure in SQL developer如何在 SQL 开发人员中执行存储过程
【发布时间】:2019-03-15 06:06:07
【问题描述】:

我正在尝试在 Oracle SQL 开发人员中执行存储过程。我已经成功编译了以下内容,它链接到两个包含数据的单独表,这些表通过外键连接。

create or replace procedure practice_run
(
    name out varchar2,
    emp_id out varchar2
)
AS
BEGIN
    SELECT emp_name, employeeID INTO name, emp_id FROM employee JOIN department ON employee.employeeID = department.employeeID WHERE department_name='research'; 
END practice_run;

所以我希望这个存储的生产者输出的是在“研究”部门工作的所有员工的名字和姓氏

我在网上搜索过这个,我发现了类似下面的内容,但它没有为我输出任何数据。

DBMS_SQL.RETURN_RESULT(practice_run);

【问题讨论】:

标签: sql oracle stored-procedures oracle-sqldeveloper


【解决方案1】:

程序按如下方式执行

VAR ename VARCHAR2(100);
VAR emp_id VARCHAR2(100);

BEGIN
   practice_run (ename, emp_id);
END;

PRINT ename;
PRINT emp_id;

您可以利用DBMS_SQL.RETURN_RESULT 的用法,将程序修改为SYS_REFCURSOR

CREATE TABLE emp
(
   emp_id   VARCHAR2 (12),
   ename    VARCHAR2 (12)
);


INSERT INTO emp (emp_id, ename)
     VALUES ('1234', 'James');

COMMIT;

CREATE OR REPLACE PROCEDURE practice_run (p_emp_id IN VARCHAR2)
AS
   c1   SYS_REFCURSOR;
BEGIN
   OPEN c1 FOR
      SELECT emp_id, ename
        FROM emp
       WHERE emp_id = p_emp_id;

   DBMS_SQL.return_result (c1);
END practice_run;

执行程序

BEGIN
   practice_run ('1234');
END;

【讨论】:

    【解决方案2】:

    看看 DBMS_SQL.RETURN_RESULT (Docs)

    在 T-SQL 中,只运行查询是很常见的。

    但在 PL/SQL 中,更多的是与查询结果进行交互。如果您只想运行一个查询并简单地打印结果,那么您过去会使用 SYS_REFCURSOR 类型的 OUT 绑定参数,而您的程序会选择这些参数。

    在 Database 12c 中,您现在可以在代码中说,您想要返回结果,而不更改过程调用本身 - 不需要 OUT 参数。

    这是一个例子。

    create or replace procedure sql_return_results as
     v_cursor SYS_REFCURSOR;
    begin
     open v_cursor for
       select *
       from employees
       fetch first 15 rows only;
       dbms_sql.return_result(v_cursor); --this is the KEY line
    end sql_return_results;
    /
    

    现在我要执行这个,看看会发生什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 2011-05-07
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多