方法一:利用数据对像,当作一个普通的sql,来调用存储过程或函数:sql 内容: exec dbo.pro_lct (参数.....)
优点: 速度快,传参简单。 可以返回结果集或单值。(检索,更新,删除全支持)
缺点: 不支持存储过程的out put 值的返回方式。
开发推荐使用此方式。
Dim dtobj As New ComDBConn()
Dim tmpCheckPrcStatus = PFn_pro_get_lct(dtobj,"2","F04","00001","","3",tmp1,tmp2)
MsgBox(tmpCheckPrcStatus.Rows(0).Item(0))
MsgBox(tmpCheckPrcStatus.Rows(0).Item(1))
---数据对像的类型:
msqlCommand.CommandText = strsqlBuilder.ToString()
msqlCommand.CommandType = CommandType.Text
'方法二:利用数据的对象自带的procedure的访问方式调用
优点:一一对应关系清楚
缺点:传参或调用麻烦,只支持output 值的返回,不能返回结果集
开发不推荐使用此方式。
Dim sqlPara(7) As sqlParameter
sqlPara(0) = New sqlParameter("IN_MODE_TYPE",sqlDbType.VarChar,1) '対象月度(yyyy/mm)
sqlPara(1) = New sqlParameter("IN_CODE1",10) '実行社員コード
sqlPara(2) = New sqlParameter("IN_CODE2",10) '処理対象日付FROM(DATE)
sqlPara(3) = New sqlParameter("IN_CODE3",10) '処理対象日付TO(DATE)
sqlPara(4) = New sqlParameter("IN_WHOUSE1",10) '終了コード(INTEGER)
sqlPara(5) = New sqlParameter("IN_WHOUSE2",10) '終了コード(INTEGER)
sqlPara(6) = New sqlParameter("OUT_MAIN_LCT",15) 'エラー№(INTEGER)
sqlPara(7) = New sqlParameter("OUT_SUB_LCT",15) 'エラー内容(varchar(300))
sqlPara(0).Direction = ParameterDirection.Input
sqlPara(1).Direction = ParameterDirection.Input
sqlPara(2).Direction = ParameterDirection.Input
sqlPara(3).Direction = ParameterDirection.Input
sqlPara(4).Direction = ParameterDirection.Input
sqlPara(5).Direction = ParameterDirection.Input
sqlPara(6).Direction = ParameterDirection.Output
sqlPara(7).Direction = ParameterDirection.Output
'プロシージャへの引渡しパラメータの設定
sqlPara(0).Value = "2"
sqlPara(1).Value = "F04"
sqlPara(2).Value = "00001"
sqlPara(3).Value = ""
sqlPara(4).Value = "3"
sqlPara(5).Value = ""
sqlPara(6).Value = String.Empty
sqlPara(7).Value = String.Empty
'④処理内容に格納されたプロシージャ名を実行
Call dtobj.PSb_ExcuteProcedure("dbo." & "pro_get_lct",sqlPara)
---数据对像的类型: msqlCommand.CommandText = strProcedureName msqlCommand.CommandType = CommandType.StoredProcedure