Skip to Main Content

Japanese

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

oo4oからPLSQLパッケージへの配列パタメータの渡し方

876439Jul 19 2011
皆さんこんにちは。

oo4oを使用し、自作のPL/SQLパッケージを呼び出したいのですが、パラメータの一つに配列が含まれ、そこにセットする部分でエラーとなり先に進めません。
エラーは、OIP-00005:変数は正しい日付型ではありません です。
環境は、Oracle11gR2 oo4o VB.net2008 Windwos7Pro です

コードは、
Const strRUNSQL As String = "begin :o_RET := TESTPL.RunSQL(:p_p1,:p_p2,:p_ColArray); end;"

(省略)

Dim prms As Object = OraDatabase.Parameters
removeAllParams(prms)
'固定項目
prms.Add("p_p1", "", ORAPARM_INPUT) : prms("p_p1").ServerType = ORATYPE_CHAR : prms("p_p1").Value = p1
prms.Add("p_p2", "", ORAPARM_INPUT) : prms("p_p2").ServerType = ORATYPE_CHAR : prms("p_p2").Value = p2
'配列
prms.AddTable("p_ColArray", ORAPARM_INPUT, ORATYPE_VARRAY, 100, , "tArray100")
For i As Integer = 0 To 99
Dim v As String = String.Format("{0}", Values(i))
prms("p_ColArray").Put_Value(v, i) --(1)
Next

'戻り値用
prms.Add("o_RET", 0, ORAPARM_OUTPUT)
prms("o_RET").ServerType = ORATYPE_NUMBER

'実行
Dim r As Boolean
Try
OraDatabase.ExecuteSql(strRUNSQL)
r = (prms("o_RET").Value <> 0)
Catch ex As Exception
r = False
End Try

removeAllParams(prms)


実行すると、(1)の部分の一件目の設定で、「OIP-00005:変数は正しい日付型ではありません」 といきなりエラー表示されます。(VBデバッグ実行時)
Put_Value(v, i)のvの値は単純に'0000000001'で特に日付型ではありません。日付型というのに意味はないようですが、、、

なぜこのタイミングでこのようなエラーとなるのかわかりません。.Put_Valueは正しいと思うのですが。
3つ目の配列パラメータをコメントアウトし、呼び出し先のPLSQLの配列パラメータもコメントアウトすると、正常に実行できます。

参考までに、呼び出し先ではPLSQLパッケージの内部関数を呼んでいます。

TESTPL(パッケージヘッダ)

TYPE tArray100 IS VARRAY(100) of VARCHAR2(100);

FUNCTION RunSQL(
PARA_p1 in char,
PARA_p2 in char,
PARA_ColArray in tArray100
) return number;

どなたかご教示いただけないでしょうか? よろしくお願い申し上げます。

なでしこ
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 16 2011
Added on Jul 19 2011
0 comments
2,392 views