2013-07-16 63 views
0

我正在創建一個類型,我想在其中使用utl_file包。不幸的是我有一個消息:如何在類型聲明中使用utl_file

MEMBER FUNCTION draw(fichier utl_file.file_type) RETURN NUMBER, 

PLS-00201:identifier utl_file.file_type must be declared 

也許有人會說我需要授予UTL_FILE包執行給用戶,但在這裏,這是解決不了問題,因爲用戶已經有了,因爲我可以用UTL_FILE我的包裏面的特權

感謝您的回答

+1

我可以確認情況存在,並且似乎無法將任何RECORD類型傳遞給對象類型的成員過程。這可能記錄在某處,但我還沒有找到它。這裏有* [documentation](http://docs.oracle.com/cd/A97630_01/appdev.920/a96624/10_objs.htm),其中聲明(在「對象類型的組件」下)該類型**屬性* *不能是RECORD類型(等等)。我猜這也適用於成員特效參數。分享並享受。 –

+0

我有答案...謝謝...沒有類型在包中定義,這似乎與utl_file這裏的情況...所以這是不可能的..太壞 – mlwacosmos

回答

1

查看documentation PL/SQL對象類型。在「方法」下,它聲明「數據類型(參數)可以是任何Oracle類型,但不允許使用屬性的類型」。其他因此被禁止的東西是在PL/SQL包中定義的類型,如UTL_FILE.FILE_TYPE。

分享和享受。

-1

您確定它是PLSQL嗎?這不是創建函數的sintax。試試這個:

CREATE OR REPLACE FUNCTION draw (fichier utl_file.file_type) RETURN NUMBER 
IS 
    A NUMBER; 
    --declare your variables 
BEGIN 
    A:=1; 
    --code your process 
RETURN A; --your return value 
END; 
/
+0

OP是創建一個**對象類型**並試圖聲明一個接受UTL_FILE.FILE_TYPE記錄作爲參數的成員過程。 –

+0

@bob:絕對 – mlwacosmos

0

--declare實用程序文件類型

V_FILE_ID_OUT := UTL_FILE.FILE_TYPE; 

- 存儲文件打開選項,在實用

V_FILE_ID_OUT := 
     UTL_FILE.FOPEN ('/path/', 
         filename, 
         'W' 
         ); 

--write到該文件的消息

UTL_FILE.PUT_LINE (V_FILE_ID_OUT, 'message'); 

- - 關閉實用程序選項

UTL_FILE.FCLOSE (V_FILE_ID_OUT);