vb.net 两种方式调用存储过程的总结

来源:互联网 发布:莳绘钢笔淘宝 编辑:程序博客网 时间:2024/05/12 08:41
 

      方法一:利用数据对像,当作一个普通的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", SqlDbType.VarChar, 10)            '実行社員コード
        sqlPara(2) = New SqlParameter("IN_CODE2", SqlDbType.VarChar, 10)               '処理対象日付FROM(DATE)
        sqlPara(3) = New SqlParameter("IN_CODE3", SqlDbType.VarChar, 10)                 '処理対象日付TO(DATE)
        sqlPara(4) = New SqlParameter("IN_WHOUSE1", SqlDbType.VarChar, 10)                  '終了コード(INTEGER)
        sqlPara(5) = New SqlParameter("IN_WHOUSE2", SqlDbType.VarChar, 10)                  '終了コード(INTEGER)
        sqlPara(6) = New SqlParameter("OUT_MAIN_LCT", SqlDbType.VarChar, 15)                'エラー№(INTEGER)
        sqlPara(7) = New SqlParameter("OUT_SUB_LCT", SqlDbType.VarChar, 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

 

原创粉丝点击