2013-05-27 49 views
0

我有樣本程序如下無法在PLSQL開發

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

執行Oracle過程現在我想運行此PROC在PLSQL developer.I嘗試以下,但其發生錯誤

begin 
    proc_Table1; 
end; 

其顯示

enter image description here

感謝對H ELP。

任何想法爲什麼發生這種情況。

回答

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'; 
+0

感謝您的回覆如何執行上述聲明 –

+1

@JavaBeginner - 您在問題中發佈的程序調用將與我發佈的程序配合使用。正如我所說,它實際上不會做任何事情,因爲程序不會修改任何內容,也無法與主叫方進行通信,所以當您調用該過程時,您不會看到任何事情發生。 –

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;