2012-03-31 23 views
2

這很可能是一個非常愚蠢的問題,但我試過搜索並回答並提出空白。PL/SQL程序字符參數

我正在編寫一個採用CHAR類型的單個參數的過程。即:

CREATE PROCEDURE Proc1 (Param1 CHAR(5)) 
    AS 
    BEGIN 
    ... 
    END; 

這不起作用,並在CHAR(5)區域周圍引發錯誤。如果我沒有爲參數指定大小,那麼只需將它保留爲CHAR即可正常工作。我試過包括關鍵字IN,但這沒有什麼區別。

是否有指定PL/SQL過程中參數的大小?

+1

btw一般建議不要使用'char'。標準字符串類型爲'varchar2',或'clob'爲巨大的值。 – 2015-10-27 13:05:43

回答

8

是否有指定PL/SQL過程中參數的大小?

不,在手動

報價記錄從http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#sthref1640

對於每個參數,指定:
- 它的名字。
- 其參數模式(...)
- 它的數據類型。 僅指定類型,而不是任意長度和精度的限制

(重點煤礦)

+0

謝謝。我曾看過這個頁面,但一定是跳過了這個頁面。感謝您解決這個問題。 – philb28 2012-03-31 16:39:16

0

正如前面提到的a_horse_with_no_name時,千萬別在指定過程定義的參數長度。 但是,如果你想控制可變長度,你可以嘗試這種方法:


procedure A(var CHAR) is 
MAX_CHAR number := 10; -- for an instance 
begin 
if length(var) > MAX_CHAR then 
    -- here you can throw an exception 
end if; 

... 

end A;