选择存储过程plsql

use*_*891 2 sql database oracle plsql stored-procedures

我对Oracle中的存储过程语法感到有点困惑.

我从一个简单的开始:

select * from test_table;
Run Code Online (Sandbox Code Playgroud)

它工作,然后我把它放在一个proc:

CREATE OR REPLACE PROCEDURE example
IS
BEGIN
   select * from test_table;
END;
Run Code Online (Sandbox Code Playgroud)

不行.预期的"INTO"是我收到的错误消息.现在,我已经看到SQL Server代码的语法示例,它只是将一个select语句推送到一个proc中,它立即起作用,但这似乎并非如此.

Old*_*mer 7

T-SQL和PL/SQL是完全不同的语言.特别是,对于PL/SQL,您必须将结果选择为某个变量或游标.根据您计划对记录数据执行的操作 - 在过程中处理 - 或返回到调用者,将驱动您必须执行的操作.

在您的示例中,如果要返回记录集,则可以执行以下操作:

CREATE OR REPLACE PROCEDURE example (
                      p_recordset OUT SYS_REFCURSOR) AS 
BEGIN 
  OPEN p_recordset FOR
    select * from test_table;
END example ;
Run Code Online (Sandbox Code Playgroud)

请参阅此链接以获取示例.