2014-02-10 28 views
0

我在oracle中編寫了簡單的存儲過程。但它的編程錯誤創建了程序。在oracle中編譯錯誤時創建的過程?

我的代碼是:

CREATE OR REPLACE PROCEDURE PRC_SELECT 
AS 
BEGIN 
SELECT * FROM tb_name; 
END; 
/

請幫我解決這個問題。

+2

'SHOW ERRORS'。可以給你錯誤。您必須將選定的行分配到某個記錄/變量中 –

+0

SQL>創建或更換過程PRC_SELECT 2(舊IN VARCHAR) 3 AS 4 BEGIN 5 SELECT * FROM dds WHERE old = @ old; 6 END; 7/ 警告:使用編譯錯誤創建的過程。 – Sesuraj

+0

對不起,這是Oracle/MySQL嗎? –

回答

2

這是一個非常基本的骨架,可滿足您的要求。

CREATE OR REPLACE PROCEDURE PRC_SELECT(p_OLD IN VARCHAR2) 
AS 
my_rec tb_name%rowtype; 
BEGIN 
SELECT * into my_rec FROM tb_name WHERE old = p_OLD; 
END; 
/

my_rec將被創建爲PL/SQL類型,其結構將是表tb_name的結構!

0

一個程序不能做select *回到屏幕。 您必須將其批量收集到一個集合中並將其返回或打開一個遊標並將其返回。 一個程序是pl/sql,它不直接寫入屏幕。如果需要,可以使用dbms_output.put_line寫入每條記錄。 您可能還想查看流水線函數,以後可以在SQL中使用它。 這取決於你的要求是真的。

0

如果你真的想讀在tb_name你可以嘗試所有行:

CREATE OR REPLACE PROCEDURE PRC_SELECT 
AS 
BEGIN 
    FOR aRow IN (SELECT * FROM tb_name) 
    LOOP 
    DBMS_OUTPUT.PUT_LINE('Retrieved ' || aRow.SOME_FIELD); 
    END LOOP; 
END; 

注意,這可能會產生大量的輸出是否有tb_name多行。

分享和享受。