我有如下示例程序
CREATE OR REPLACE PROCEDURE proc_Table1
BEGIN
SELECT 'Sample UserName' AS UserName
FROM Dual;
END;
现在我想在 PLSQL 开发人员中运行这个 Proc。我尝试了以下但它生成错误
begin
proc_Table1;
end;
它的显示
谢谢您的帮助。
任何想法为什么会发生这种情况。
我有如下示例程序
CREATE OR REPLACE PROCEDURE proc_Table1
BEGIN
SELECT 'Sample UserName' AS UserName
FROM Dual;
END;
现在我想在 PLSQL 开发人员中运行这个 Proc。我尝试了以下但它生成错误
begin
proc_Table1;
end;
它的显示
谢谢您的帮助。
任何想法为什么会发生这种情况。
当您创建该过程时,您应该已经注意到您有语法错误这一事实。如果您要运行一个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';
试试这个,它应该工作:
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;