无法在PLSQL Developer中执行oracle过程

时间:2013-05-27 06:35:54

标签: oracle oracle10g plsqldeveloper

我的样本程序如下

CREATE OR REPLACE PROCEDURE proc_Table1
BEGIN
  SELECT 'Sample UserName' AS UserName    
    FROM Dual;
END;

现在我想在PLSQL开发人员中运行这个Proc。我尝试了下面但是生成错误

begin
  proc_Table1;
end;

显示

enter image description here

感谢您的帮助。

任何想法为什么会发生这种情况。

2 个答案:

答案 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;