【发布时间】:2017-12-21 04:48:37
【问题描述】:
我正在尝试将 SQL 查询转换为 Oracle PL/SQL 存储过程。
这里是查询:
select * from table1 where DATE = " + s1 + " and TYPE='" + ty + "' and NAME='"+nm+"' Order by TYPE DEsc;
这里是存储过程:
CREATE PROCEDURE procedure1
(
s1 IN DATE,
ty IN CHAR DEFAULT 2,
nm IN VARCHAR2 DEFAULT 64
)
IS
d table1.DATE%TYPE;
C table1.TYPE%TYPE;
S table1.NAME%TYPE;
CURSOR tb IS select DATE,TYPE,NAME INTO d,c,s from table1;
BEGIN
FOR i IN tb
LOOP
DBMS_OUTPUT.PUT_LINE('DATE' ||i.DATE);
DBMS_OUTPUT.PUT_LINE('TYPE' ||i.TYPE);
DBMS_OUTPUT.PUT_LINE('NAME' ||i.NAME);
END LOOP;
END procedure1;
执行存储过程后我没有看到任何输出。我不确定我是否正确创建了存储过程。
【问题讨论】:
-
如果您正在使用 sqldeveloper 并突出显示给定的文本并执行它,您应该得到 ORA-936。如果您使用的是 sqlplus,那么当您按下 [Enter] 时,不会执行任何操作,因为 sqlplus 在看到
create procedure时会执行一些特殊操作。在看到/字符本身出现在一行之前,它不会执行任何操作。欢迎来到 SO。
标签: oracle stored-procedures plsql oracle12c