0

我有如下示例程序

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

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

begin
  proc_Table1;
end;

它的显示

在此处输入图像描述

谢谢您的帮助。

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

4

2 回答 2

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 赋值运算符来填充局部变量,而不是选择 from dual,即

l_username := 'Sample UserName';
于 2013-05-27T06:41:44.797 回答
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;
于 2013-11-12T07:30:25.620 回答