在A(yíng)DO調(diào)用存儲(chǔ)過(guò)程中進(jìn)行有效的使用
你可以在安裝ADO調(diào)用存儲(chǔ)過(guò)程中。但它的功能沒(méi)有Oracle或Microsoft那么多。而且,當(dāng)然,Data Direct有一個(gè)本地的data provider for Oracle。可以安裝在Visual Studio中。但它的功能沒(méi)有Oracle或Microsoft那么多。
在ADO調(diào)用存儲(chǔ)過(guò)程一直是一個(gè)困擾大家的問(wèn)題。其實(shí),關(guān)于ADO調(diào)用存儲(chǔ)過(guò)程的方法在很多書(shū)中都有講到,標(biāo)準(zhǔn)的做法無(wú)非是按照以下步驟進(jìn)行:
1、生成并初始化一個(gè)_CommandPtr對(duì)象;
2、生成調(diào)用存儲(chǔ)過(guò)程需要的參數(shù),這些參數(shù)都是_ParameterPtr對(duì)象;
3、按照順序?qū)⑹褂胈CommandPtr的Append方法為存儲(chǔ)過(guò)程提供參數(shù)(包括輸入?yún)?shù)和輸出參數(shù));
4、為_(kāi)CommandPtr對(duì)象指定需要使用的ADO連接;
5、使用_CommandPtr的Execute方法調(diào)用存儲(chǔ)過(guò)程;
6、從結(jié)果中獲取返回參數(shù)的值(如果有的話(huà))。 具體的過(guò)程在此我不詳細(xì)描述,我想看看本文附帶的代碼就應(yīng)該很明白了。在這里我想就我使用ADO調(diào)用存儲(chǔ)過(guò)程時(shí)的一些體會(huì)說(shuō)明一下。#t#
1、關(guān)于CreateParameter函數(shù)
該函數(shù)的原型為:CreateParameter (Name, Type, Direction, Size, Value)其中Name是參數(shù)的名稱(chēng),可以指定也可以不指定;
Type是一個(gè)DataTypeEnum值,指定參數(shù)的類(lèi)別,取值有adInteger(整型)、adChar(字符/字符串型)等;ADO調(diào)用存儲(chǔ)過(guò)程Direction是一個(gè)ParameterDirectionEnum值,其取值為adParamInput、adParamInputOutput、adParamOutput、adParamReturnValue、adParamUnknown;Size是一個(gè)Long類(lèi)型的值,指示該參數(shù)值以字節(jié)計(jì)算的***長(zhǎng)度,例如對(duì)int型,該值可以取為sizeof(int),
對(duì)Long型,該值可以取為sizeof(long),ADO調(diào)用存儲(chǔ)過(guò)程對(duì)字符串型,可以使用該字符串的長(zhǎng)度;Value是一個(gè)variant類(lèi)型的值,是該參數(shù)的取值。在這里需要注意的是,Type參數(shù)、Direction參數(shù)以及Size參數(shù)一定要和存儲(chǔ)過(guò)程定義時(shí)的參數(shù)相吻合,
例如,如果有下面一個(gè)存儲(chǔ)過(guò)程:
- CREATE PROCEDURE SMS_Proc_Handle_All
- (@UserID Integer,
- @SourAddr Varchar(15),
- @DestAddr varchar(5000),
- @AvValue Single output,
- @ReturnInfo varchar(100) output