- - PR -
.NETからストアドプロシージャの引数設定方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-08-23 16:58
@訂正します。申し訳ありませんでした。
オラクルサーバー(oracle9i)内に以下のストアドを置き ------------------------------------ 誤)CREATE OR REPLACE PROCEDURE "テスト" → 正)CREATE OR REPLACE PROCEDURE テスト (aaa in number,ppp in out varchar2) is ppp:='OK'; end; ----------------------------------- AプログラムのデバッグとしてPL/SQL Developer Ver5も使用し テストウィンドウにて以下のように してテストしますと正常に値が返ってきます! declare aa number; bb varchar2(10); begin aa:=1; bb:='NG'; テスト(aa,bb); end; OK 不思議なのがテスト(:aa,:bb);とすると ORA-01008:バインドされていない変数があります。 とエラーメッセージが表示されます | ||||||||
|
投稿日時: 2004-08-23 17:15
ダブルクォーテーションのあるなしという問題ではなく、“Oracleのオブジェクト名に英数以外の文字を使うべきではない”という問題なんですけど。。。 「使えている」というのと、「仕様上サポートされており、使える」というのは別の問題です。 『Oracle9i SQL リファレンス』より:
| ||||||||
|
投稿日時: 2004-08-23 17:21
PV.ParameterName = "pv" を追加してみて下さい。
こちらも"PV"ではなく、"pv"にしたほうが良いかと。 | ||||||||
|
投稿日時: 2004-08-23 17:43
.NETでの記述
Dim pv As New OracleClient.OracleParameter Dim PLsql As String = "TEST(0, pv)" pv.OracleType = OracleClient.OracleType.VarChar pv.Size = 10 pv.Direction = ParameterDirection.InputOutput pv.ParameterName = "pv" CMD.Parameters.Add("pv", pv.OracleType.VarChar, 10).Value = "99" CMD.CommandType = CommandType.StoredProcedure CMD.CommandText = PLsql CMD.ExecuteReader() ← いつも、ここでエラーが表示されます MsgBox(CMD.Parameters("pv").Value) | ||||||||
|
投稿日時: 2004-08-23 17:43
.NETでの記述
Dim pv As New OracleClient.OracleParameter Dim PLsql As String = "TEST(0, pv)" pv.OracleType = OracleClient.OracleType.VarChar pv.Size = 10 pv.Direction = ParameterDirection.InputOutput pv.ParameterName = "pv" CMD.Parameters.Add("pv", pv.OracleType.VarChar, 10).Value = "99" CMD.CommandType = CommandType.StoredProcedure CMD.CommandText = PLsql CMD.ExecuteReader() ← いつも、ここでエラーが表示されます MsgBox(CMD.Parameters("pv").Value) | ||||||||
|
投稿日時: 2004-08-23 17:46
OTNと、マルチポストですね。
| ||||||||
|
投稿日時: 2004-08-23 18:05
オラクル全然わからないけど、こうじゃないの?
pv.Value = "99"; CMD.Parameters.Add(pv); じゃないと、OracleParameter作ってる意味ないのでは。。。 | ||||||||
|
投稿日時: 2004-08-23 18:24
|