2012-03-31 23 views
2

これはおそらく非常にばかげた質問ですが、私は検索して答えようとしましたが空になりました。PL/SQLプロシージャの文字パラメータ

私は、CHAR型の1つのパラメータを取るプロシージャを作成しています。すなわち:

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

これは機能せず、CHAR(5)領域の周りにエラーをスローします。私はパラメータのサイズを指定しない場合は、ちょうどCHARとして残して、それはうまく動作します。私はキーワードINを含めてみましたが、これは違いはありません。

PL/SQLプロシージャでパラメータのサイズを指定する方法はありますか?

+1

ところで、一般的なアドバイスは 'char'を使用することではありません。標準の文字列型は 'varchar2'です。巨大な値の場合は' clob'です。 –

答えて

8

PL/SQLプロシージャでパラメータのサイズを指定する方法はありますか。

いいえ、パラメータごとhttp://docs.oracle.com/cd/B19306_01/appdev.102/b14261/subprograms.htm#sthref1640

から手動

引用に記載されているように、次のように指定します。
を - その名を。
- そのパラメータモード(...)
- そのデータ型。 あなたが唯一のタイプではなく、任意の長さや精度の制約

(重点鉱山)a_horse_with_no_name前に述べたように

+0

ありがとうございます。私はこのページを見ていましたが、それ以上のスキップが必要です。これをクリアしていただきありがとうございます。 – philb28

0

を指定するには、プロシージャ定義のパラメータの長さを指定shoudn't。あなたは変数の長さを制御したい場合 しかし、あなたはこの方法を試すことができます。


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; 
関連する問題