【发布时间】:2015-04-01 11:33:11
【问题描述】:
我对 Oracle 中的存储过程语法有点困惑。
我从一个简单的开始:
select * from test_table;
它起作用了,然后我把它放在一个proc中:
CREATE OR REPLACE PROCEDURE example
IS
BEGIN
select * from test_table;
END;
不起作用。预期的“INTO”是我收到的错误消息。现在,我已经看到了 SQL Server 代码的语法示例,它们只是将一个 select 语句推入一个 proc 中并且它可以立即工作,但这里似乎并非如此。
【问题讨论】:
-
正确。如果您只想运行查询,请运行查询。在存储过程中,您需要对数据做一些事情——以某种方式处理它。您可以模拟 SQL Server 方法的最接近方法是在 12c 数据库中,使用以下语法:声明 V_cursor SYS_REFCURSOR;开始打开 v_cursor for select * from employees; dbms_sql.return_result(v_cursor);结尾; / 这将执行查询并返回结果。 plsql 过程中的相同原理。
-
不要跳入编程,首先考虑需求,然后分析接近所需输出的方法。欢迎来到 Stack Overflow,欢迎来到 Oracle。您会发现 Oracle 和 SQL Server 之间有很多不同之处。
标签: sql database oracle stored-procedures plsql