2015-06-30 54 views
-1

有沒有辦法用所需的大小聲明varchar2常量?有沒有辦法用所需的大小自動聲明一個varchar2常量?

例如我想有以下定義,而不必在括號中顯式聲明大小:

c_my_string constant varchar2(3) := 'abc'; 

有沒有辦法做這樣的事情:

c_my_string constant varchar2(sizeof('abc')) := 'abc'; 

除此之外,我當然可以定義常數作爲原料,然後將其轉換爲使用UTL_RAW.CAST_TO_VARCHAR2(my_raw);

+1

不就是比你的第一線短/簡單...爲什麼你想使聲明比它真正需要的更復雜? – Ditto

+1

只有在常量與表格列相關時,即使您只能設置最大尺寸,而不是實際尺寸。爲什麼硬編碼字符串的長度是一個問題? –

+0

這將是懶惰的,但你可以使用'c_my_string long:='abc';'。請注意,PL/SQL中的'long'只是'varchar2(32760)'的簡寫。 –

回答

0

我想你可以使用一個本地函數來代替,然後指的是你將一個變量飛一個VARCHAR2:

declare 
    function f_my_string return varchar2 is 
    begin 
    return 'abc'; 
    end; 
begin 
    dbms_output.put_line(f_my_string); 
end; 
/

不知道爲什麼你想讓它變得複雜。

+0

如何使用clob而不是varchar2? – Roland

+0

@Roland - CLOB將不會是*更多*內存密集型的?無論如何,我會認爲開銷會更高,但是這是另一個有趣的事情來測試我想。 –

+0

我認爲你是對的。我沒有檢查它,但是我讀了一篇關於這個觀點的文章。 – Roland

0

如果使用char類型,你不需要指定最大長度,所以這應該工作:

c_my_string constant char := 'abc'; 
相關問題