我正在使用Oracle SQL Developer和Oracle 11g。
我面临一个奇怪的问题,为Select查询创建一个简单的存储过程,不需要任何输入参数。它只是从“双”表中选择用户定义的函数。
这些是我面临的问题:
我无法创建没有输入参数的过程(因为我不需要在select中使用任何参数值!)。但是语法不允许我有零参数,它需要REF_CURSOR
输出参数。 REF_CURSOR
是SQL Developer程序中的必修课吗?是否与涉及Select查询的程序有关?
select查询需要在SQL开发人员中使用INTO
子句(复制查询结果的变量)。这是强制性的吗?
即使我使用了INTO
子句,我也无法弄清楚声明临时变量以将查询结果复制到此变量的语法。这样我就可以在我的程序片段中使用此 out 变量。
这是我的程序块:
Create or Replace PROCEDURE Getmarketdetails
AS
DECLARE temp varchar;
BEGIN
SELECT *
INTO temp from dual;
END Getmarketdetails;
我在编写程序时遇到这些错误:
我需要的只是完美的脚本语法,为此创建存储过程,并使用 exec 命令执行它。以及对上述问题的一些澄清。感谢有人可以帮忙! :)
答案 0 :(得分:3)
您的语法不正确 - 您需要声明varchar的长度,而不需要声明。
Create or Replace PROCEDURE Getmarketdetails
AS
temp varchar(100);
BEGIN
SELECT *
INTO temp from dual;
END Getmarketdetails;
答案 1 :(得分:0)
Create or Replace PROCEDURE Getmarketdetails
AS
temp varchar2(20);
BEGIN
SELECT 'stack overflow' INTO temp from dual;
Dbms_output.put_line(temp);
END Getmarketdetails;
在您的程序中完成了一些修改。不要根据需要编写声明和提及变量。