DECIMAL を宣言するときに、精度と位取りを定義することはできません。これらは、自動的に割り当てられるからです。 精度と位取りを指定できるのは、DECIMAL へのキャストを行うときだけです。
引用符で囲まれていない数字ストリングのみで構成される、つまり、小数点と指数のどちらも含まない 10 進リテラル (12345 など) は、整数で表現できる大きさの場合は INTEGER タイプになります。 それ以外の場合は、DECIMAL タイプになります。
引用符で囲まれていない数字ストリングと、オプションで小数点、および指数で構成される 10 進リテラル (123e1 など) は、浮動小数点で表現できる大きさの場合は FLOAT タイプとなります。 それ以外の場合は、DECIMAL タイプになります。
キーワード DECIMAL と引用符付き数字ストリングで構成される 10 進リテラルは、小数点および指数の有無に関わらず、DECIMAL タイプとなります。例えば、DECIMAL '42'、DECIMAL '1.2346789e+203' などです。
SET VAL = CAST('123456' AS DECIMAL(3,0))