VB调用存储过程 - CreateParameter 方法

这次又转为VB6了.......  (┬_┬)

---------------------------------------------------------------------------------------

CreateParameter 方法
使用指定属性创建新的 Parameter 对象。
语法
Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
返回值
返回 Parameter 对象。
参数
Name   可选,字符串,代表 Parameter 对象名称。
Type   可选,长整型值,指定 Parameter 对象数据类型。关于有效设置请参见 Type 属性。
Direction   可选,长整型值,指定 Parameter 对象类型。关于有效设置请参见 Direction 属性。
Size   可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。
Value   可选,变体型,指定 Parameter 对象的值。15013772506
说明
使用 CreateParameter 方法可用指定的名称、类型、方向、大小和值创建新的 Parameter 对象。在参数中传送的所有值都将写入相应的 Parameter 属性。
该方法无法自动将 Parameter 对象追加到 Command 对象的 Parameter 集合,这样就可以设置附加属性。如果将 Parameter 对象追加到集合,则 ADO 将使该附加属性的值生效。
如果在 Type 参数中指定可变长度的数据类型,那么在将它追加到 Parameters 集合之前必须传送 Size 参数或者设置 Parameter 对象的 Size 属性;否则将产生错误。

 

Type 属性
指示 Parameter、Field 或 Property 对象的操作类型或数据类型。
设置和返回值
设置或返回下列 DataTypeEnum 值之一。相应的 OLE DB 类型标识符在下表的说明栏的括号中给出。有关 OLE DB 数据类型的详细信息,请参阅第 10 章和《OLE DB 程序员参考》的附录
常量 说明
AdArray 与其他类型一起加入逻辑 OR 以指示该数据是那种类型的安全数组 (DBTYPE_ARRAY)。
AdBigInt 8 字节带符号的整数 (DBTYPE_I8)。
AdBinary 二进制值 (DBTYPE_BYTES)。
AdBoolean 布尔型值 (DBTYPE_BOOL)。
adByRef 与其他类型一起加入逻辑 OR 以指示该数据是其他类型数据的指针 (DBTYPE_BYREF)。
adBSTR 以空结尾的字符串 (Unicode) (DBTYPE_BSTR)。
adChar 字符串值 (DBTYPE_STR)。
adCurrency 货币值 (DBTYPE_CY)。货币数字的小数点位置固定、小数点右侧有四位数字。该值保存为 8 字节范围为 10,000 的带符号整型值。
adDate 日期值 (DBTYPE_DATE)。日期按双精度型数值来保存,数字全部表示从 1899 年 12 月 30 开始的日期数。小数部分是一天当中的片段时间。
adDBDate 日期值 (yyyymmdd) (DBTYPE_DBDATE)。
adDBTime 时间值 (hhmmss) (DBTYPE_DBTIME)。
adDBTimeStamp 时间戳(yyyymmddhhmmss 加 10 亿分之一的小数)(DBTYPE_DBTIMESTAMP).
adDecimal 具有固定精度和范围的精确数字值 (DBTYPE_DECIMAL)。
adDouble 双精度浮点值 (DBTYPE_R8)。
adEmpty 未指定值 (DBTYPE_EMPTY)。
adError 32 - 位错误代码 (DBTYPE_ERROR)。
adGUID 全局唯一的标识符 (GUID) (DBTYPE_GUID)。
adIDispatch OLE 对象上 Idispatch 接口的指针 (DBTYPE_IDISPATCH)。
adInteger 4 字节的带符号整型 (DBTYPE_I4)。
adIUnknown OLE 对象上 IUnknown 接口的指针 (DBTYPE_IUNKNOWN)。
adLongVarBinary 长二进制值(仅用于 Parameter 对象)。
adLongVarChar 长字符串值(仅用于 Parameter 对象)。
adLongVarWChar 以空结尾的长字符串值(仅用于 Parameter 对象)。
adNumeric 具有固定精度和范围的精确数字值 (DBTYPE_NUMERIC)。
adSingle 单精度浮点值 (DBTYPE_R4)。
adSmallInt 2 字节带符号整型 (DBTYPE_I2)。
adTinyInt 1 字节带符号整型 (DBTYPE_I1)。
adUnsignedBigInt 8 字节不带符号整型 (DBTYPE_UI8)。
adUnsignedInt 4 字节不带符号整型 (DBTYPE_UI4)。
adUnsignedSmallInt 2 字节不带符号整型 (DBTYPE_UI2)。
adUnsignedTinyInt 1 字节不带符号整型 (DBTYPE_UI1)。
adUserDefined 用户定义的变量 (DBTYPE_UDT)。
adVarBinary 二进制值(仅 Parameter 对象)。
adVarChar 字符串值(仅 Parameter 对象)。
adVariant 自动变体型 (DBTYPE_VARIANT)。
adVector 与其他类型一起加入逻辑 OR 中,指示数据是 DBVECTOR 结构(由 OLE DB 定义)。该结构含有元素的计数和其他类型 (DBTYPE_VECTOR) 数据的指针。
adVarWChar 以空结尾的 Unicode 字符串(仅 Parameter 对象)。
adWChar 以空结尾的 Unicode 字符串 (DBTYPE_WSTR)。
说明
对 Parameter 对象,Type 属性是读/写。对其他所有对象,Type 属性是只读。


Direction 属性
指示 Parameter 所标明的是输入参数、输出参数还是既是输出又是输入参数,或该参数是否为存储过程返回的值。
设置和返回值
设置或返回以下某个 ParameterDirectionEnum 值。
常量 说明
AdParamUnknown 指示参数方向未知。
AdParamInput 默认值。指示输入参数。
AdParamOutput 指示输出参数。
AdParamInputOutput 同时指示输入参数和输出参数。
AdParamReturnValue 指示返回值。
说明
使用 Direction 属性可指定向过程传递参数或从过程传递参数的方式。Direction 属性为读/写;该属性允许使用不返回该信息的提供者,或者在不希望 ADO 为了获取参数信息而附加调用提供者时设置该信息。
并非所有的提供者都可以在其存储过程中确定参数方向。在此情况下,在执行查询前必须设置 Direction 属性。

 ----------------------------------------------------------------

按上面的说明,各参数都应该有一些固定的参数写法,然而我看到的下面这部分代码,不知道为什么参数都是一堆数字。。。

不理解各个数字难道有什么转义??懵逼脸。

    gudtErrObject.Position = "fncProcRun_0010" '処理開始
    Me.MousePointer = 11
    Set objCmd = CreateObject("ADODB.Command")
    Set objPrm = CreateObject("ADODB.Parameter")
    
    strProcSql = "AD_SIR_IF.AD_MAIN_R"
    
    With objCmd
        gudtErrObject.Position = "fncProcRun_0020" 'コマンド設定
        .CommandText = strProcSql
        .CommandType = 4
        .ActiveConnection = objOraDb
        
        gudtErrObject.Position = "fncProcRun_0030" 'IN引数の設定
        Set objPrm = .CreateParameter("PC_KAI_CODE_i", 129, 1, 5) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_KMK_KAIKAKE_i", 200, 1, 255) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_KMK_SETSUBI_i", 200, 1, 255) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_RPL_DATE_S_i", 129, 1, 10) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_RPL_DATE_E_i", 129, 1, 10) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_SIR_CODE_S_i", 129, 1, 20) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_SIR_CODE_E_i", 129, 1, 20) .Parameters.Append objPrm Set objPrm = .CreateParameter("PC_REC_KBN_i", 129, 1, 1) .Parameters.Append objPrm
        
        gudtErrObject.Position = "fncProcRun_0040" 'OUT引数の設定(エラー情報分)
        Set objPrm = .CreateParameter("PN_ret_sts_o", 21, 2, 10)
        .Parameters.Append objPrm
        Set objPrm = .CreateParameter("PV_err_pos_o", 200, 2, 255)
        .Parameters.Append objPrm
        Set objPrm = .CreateParameter("PN_err_code_o", 21, 2, 10)
        .Parameters.Append objPrm
        Set objPrm = .CreateParameter("PV_err_msg_o", 200, 2, 255)
        .Parameters.Append objPrm
        
        gudtErrObject.Position = "fncProcRun_0050" 'IN引数に値を設定
        .Parameters("PC_KAI_CODE_i").Value = gstrTenRenkeiKaiCode
        .Parameters("PC_KMK_KAIKAKE_i").Value = gstrKamokuKaikake
        .Parameters("PC_KMK_SETSUBI_i").Value = gstrKamokuSetsubi
        
        .Parameters("PC_RPL_DATE_S_i").Value = IIf(IsNull(imDate(0).Value), "", imDate(0).Value)
        .Parameters("PC_RPL_DATE_E_i").Value = IIf(IsNull(imDate(1).Value), "", imDate(1).Value)
        .Parameters("PC_SIR_CODE_S_i").Value = imtxtShiireSakiCode(0).Text
        .Parameters("PC_SIR_CODE_E_i").Value = imtxtShiireSakiCode(1).Text
        .Parameters("PC_REC_KBN_i").Value = gstrMode
        
        
        .Execute
        
        If .Parameters("PN_ret_sts_o").Value = 0 Then
            '正常終了の場合
            Me.MousePointer = 0
        Else
            '異常終了の場合
            GoTo ProcErrWrite 'エラー書出し処理へ
        End If
        On Error GoTo 0
        Set objPrm = Nothing
        Set objCmd = Nothing
        
    End With

 

你可能感兴趣的:(VB调用存储过程 - CreateParameter 方法)