我的样本程序如下
CREATE OR REPLACE PROCEDURE proc_Table1
BEGIN
SELECT 'Sample UserName' AS UserName
FROM Dual;
END;
现在我想在PLSQL开发人员中运行这个Proc。我尝试了下面但是生成错误
begin
proc_Table1;
end;
显示
感谢您的帮助。
任何想法为什么会发生这种情况。
答案 0 :(得分:4)
创建过程时,您应该收到有关语法错误这一事实的警告。如果您要运行SELECT
语句,则需要对结果执行某些操作 - 填充局部变量或打开游标或其他内容。您发布的代码也缺少IS/AS
关键字
CREATE OR REPLACE PROCEDURE proc_Table1
AS
l_username VARCHAR2(30);
BEGIN
SELECT 'Sample UserName' AS UserName
INTO l_username
FROM Dual;
END;
在语法上有效。但是,它似乎并不特别有用 - 您的过程不会修改数据库,也无法与调用者通信,因此它没有做任何有意义的事情。作为一般原则,您通常也希望使用简单的PL / SQL赋值运算符来填充局部变量,而不是从dual
中选择,即
l_username := 'Sample UserName';
答案 1 :(得分:0)
试试这个,它应该有效:
CREATE OR REPLACE PROCEDURE proc_Table1(UserName OUT VARCHAR2)
AS
BEGIN
SELECT 'Sample UserName' INTO UserName
FROM Dual;
dbms_output.put_line(UserName);
END PROC_TABLE1;
-------------------------------
How to Execute
-------------------------------
declare
name varchar2(50);
result varchar2(100);
begin
proc_table1(name);
end;