ADO中sqlserver存储过程使用

原创 2003年09月10日 11:31:00

从ADO中得到多个记录集以及怎么样在ADO中使用sql server 的存储过程

DataType Value Length Data Length
BIGINT 996857543543543 15 8
INT 543543 6 4
SMALLINT 32765 5 2
TINYINT 254 3 1
BIT True 1 1
DECIMAL 765.5432321 11 9
NUMERIC 432.6544 8 5
MONEY 543.1234 6 8
SMALLMONEY 543.1234 6 4
FLOAT 5.4E+54 8 8
REAL 2.43E+24 9 4
DATETIME 8/31/2003 11:55:25 PM 19 8
SMALLDATETIME 8/31/2003 11:55:00 PM 19 4
CHAR QWE 3 4
VARCHAR Variable! 9 9
TEXT     307
NCHAR WIDE 4 8
NVARCHAR   0 0
NTEXT     614
GUID {58F94A80-B839-4B35-B73C-7F4B4D336C3C} 36 16

Return Value: 0

CREATE PROCEDURE "dbo"."DataTypeTester"
     @myBigInt bigint
     , @myInt int
     , @mySmallint smallint
     , @myTinyint tinyint
     , @myBit bit
     , @myDecimal decimal(10, 7)
     , @myNumeric numeric(7, 4)
     , @myMoney money
     , @mySmallMoney smallmoney
     , @myFloat float
     , @myReal real
     , @myDatetime datetime
     , @mySmallDatetime smalldatetime
     , @myChar char(4)
     , @myVarchar varchar(10)
     , @myText text
     , @myNChar nchar(4)
     , @myNVarchar nvarchar(10)
     , @myNText ntext
     , @myGuid uniqueidentifier
 AS
 
 SELECT 'BIGINT' "DataType", @myBigInt "Value" , LEN(@myBigInt) "Length"              , DATALENGTH(@myBigInt) "Data Length"
 SELECT 'INT'              , @myInt            , LEN(@myInt)                          , DATALENGTH(@myInt)
 SELECT 'SMALLINT'         , @mySmallint       , LEN(@mySmallint)                     , DATALENGTH(@mySmallint)
 SELECT 'TINYINT'          , @myTinyint        , LEN(@myTinyint)                      , DATALENGTH(@myTinyint)
 SELECT 'BIT'              , @myBit            , LEN(@myBit)                          , DATALENGTH(@myBit)
 SELECT 'DECIMAL'          , @myDecimal        , LEN(@myDecimal)                      , DATALENGTH(@myDecimal)
 SELECT 'NUMERIC'          , @myNumeric        , LEN(@myNumeric)                      , DATALENGTH(@myNumeric)
 SELECT 'MONEY'            , @myMoney          , LEN(CAST(@mySmallMoney as varchar))  , DATALENGTH(@myMoney)
 SELECT 'SMALLMONEY'       , @mySmallMoney     , LEN(CAST(@mySmallMoney as varchar))  , DATALENGTH(@mySmallMoney)
 SELECT 'FLOAT'            , @myFloat          , LEN(@myFloat)                        , DATALENGTH(@myFloat)
 SELECT 'REAL'             , @myReal           , LEN(@myReal)                         , DATALENGTH(@myReal)
 SELECT 'DATETIME'         , @myDatetime       , LEN(@myDatetime)                     , DATALENGTH(@myDatetime)
 SELECT 'SMALLDATETIME'    , @mySmallDatetime  , LEN(@mySmallDatetime)                , DATALENGTH(@mySmallDatetime)
 SELECT 'CHAR'             , @myChar           , LEN(@myChar)                         , DATALENGTH(@myChar)
 SELECT 'VARCHAR'          , @myVarchar        , LEN(@myVarchar)                      , DATALENGTH(@myVarchar)
 SELECT 'TEXT'             , ''                , ''                                   , DATALENGTH(@myText)
 SELECT 'NCHAR'            , @myNChar          , LEN(@myNChar)                        , DATALENGTH(@myNChar)
 SELECT 'NVARCHAR'         , @myNVarchar       , LEN(@myNVarchar)                     , DATALENGTH(@myNVarchar)
 SELECT 'NTEXT'            , ''                , ''                                   , DATALENGTH(@myNText)
 SELECT 'GUID'             , @myGuid           , LEN(@myGuid)                         , DATALENGTH(@myGuid)
 
 -- TODO:  READTEXT should do this...
 /*
     , @myText "text"
     , @myNText "ntext"
 */
 
 RETURN(0)
 
 
 

Code:<!--#include virtual="/testsite/global_include.asp" --> <% Dim conn 'As ADODB.Connection Dim cmd 'As ADODB.Command Dim prm 'As ADODB.Parameter Dim rs 'As ADODB.Recordset Dim ret 'As Long Dim proc 'As String Dim allData() 'As Variant Dim colNames() 'As Variant Dim i 'As Long Dim datetime 'As DateTime Const StoredProcedure = "[dbo].[DataTypeTester]" Const titleString = "<html><head><title>ADO Parameter Test 3 / Multiple Recordset Tester</title><link rel=""stylesheet"" href=""/Templates/style.css"" type=""text/css"" /></head><body><div align=""left""><h3>A example of how to retrieve multiple recordsets from ADO and how to set parameters in ADO for SQL Server Stored Procedures</h3>" ReDim allData(0) ' initialize array dimension datetime = Now() Response.Write titleString Set conn = Server.CreateObject("ADODB.Connection") Set cmd = Server.CreateObject("ADODB.Command") conn.Open Application("connectionString") With cmd Set .ActiveConnection = conn .CommandText = StoredProcedure ' always use ADO constants .CommandType = adCmdStoredProc ' Check into the NamedParameters property at some point ' It doesn't require the order to be enforced, but it is always a good idea to enforce it anyway (for the documentation aspect of coding) ' RETURN parameter needs to be first .Parameters.Append cmd.CreateParameter("RETURN", adInteger, adParamReturnValue, 4) .Parameters.Append .CreateParameter("@myBigInt", adBigInt, adParamInput, 8, 996857543543543) .Parameters.Append .CreateParameter("@myInt", adInteger, adParamInput, 4, 543543) .Parameters.Append .CreateParameter("@mySmallint", adSmallInt, adParamInput, 2, 32765) .Parameters.Append .CreateParameter("@myTinyint", adTinyInt, adParamInput, 1, 254) .Parameters.Append .CreateParameter("@myBit", adBoolean, adParamInput, 4, True) ' Only Decimal and Numeric needs Precision and NumericScale .Parameters.Append .CreateParameter("@myDecimal", adDecimal, adParamInput, 9, 765.5432321) With .Parameters.Item("@myDecimal") .Precision = 10 .NumericScale = 7 End With Set prm = .CreateParameter("@myNumeric", adNumeric, adParamInput, 5, 432.6544) prm.Precision = 7 prm.NumericScale = 4 .Parameters.Append prm Set prm = Nothing .Parameters.Append .CreateParameter("@myMoney", adCurrency, adParamInput, 8, 543.1234) .Parameters.Append .CreateParameter("@mySmallMoney", adCurrency, adParamInput, 4, 543.1234) .Parameters.Append .CreateParameter("@myFloat", adDouble, adParamInput, 8, 5.4E+54) .Parameters.Append .CreateParameter("@myReal", adSingle, adParamInput, 4, 2.43E+24) .Parameters.Append .CreateParameter("@myDatetime", adDBTimeStamp, adParamInput, 8, datetime) .Parameters.Append .CreateParameter("@mySmallDatetime", adDBTimeStamp, adParamInput, 4, datetime) .Parameters.Append .CreateParameter("@myChar", adChar, adParamInput, 4, "QWE") .Parameters.Append .CreateParameter("@myVarchar", adVarchar, adParamInput, 10, "Variable!") .Parameters.Append .CreateParameter("@myText", adLongVarChar, adParamInput, Len(titleString)) .Parameters.Item("@myText").AppendChunk titleString .Parameters.Append .CreateParameter("@myNChar", adWChar, adParamInput, 4, "WIDE") .Parameters.Append .CreateParameter("@myNVarchar", adVarWchar, adParamInput, 10, "") .Parameters.Append .CreateParameter("@myNText", adLongVarWChar, adParamInput, Len(titleString)) .Parameters.Item("@myNText").AppendChunk titleString ' note the difference in these - without the {} the string implicitly converts ' the adVarChar version is of course commented out '.Parameters.Append .CreateParameter("@myGuid", adVarChar, adParamInput, 36, "58F94A80-B839-4B35-B73C-7F4B4D336C3C") .Parameters.Append .CreateParameter("@myGuid", adGUID, adParamInput, 16, "{58F94A80-B839-4B35-B73C-7F4B4D336C3C}") Set rs = .Execute 'get column names ReDim colNames(rs.Fields.Count - 1) For i = 0 to rs.Fields.Count - 1 colNames(i) = rs.Fields.Item(i).Name Next Do While Not (rs Is Nothing) ' get initial recordset If Not rs.EOF Then ' for retrieving more than about 30 or so recordsets you would probably want to use a collection allData(UBound(allData)) = rs.GetRows(adGetRowsRest) End If ' this will be nothing if no recordset is returned Set rs = rs.NextRecordset ' resize array if needed If Not (rs Is Nothing) Then ReDim Preserve allData(UBound(allData) + 1) Loop ' must release the recordset before retrieving output parameters and/or the return value ReleaseObj rs, True, True ret = CStr(.Parameters.Item("RETURN").Value) End With ReleaseObj cmd, False, True ReleaseObj conn, True, True ' show stored procedure proc = GetStoredProcedureDefinition(StoredProcedure) With Response outputNamedGetRowsArray allData, colNames .Write "<br />" .Write "Return Value: " & ret & "<br /><br />" .Write "<pre>" & proc & "</pre>" End With displayAspFile Server.MapPath("adodb.command3.asp") Response.Write "</div></body></html>" %>
版权声明:本文为博主原创文章,未经博主允许不得转载。

VS2010-MFC通过ADO调用SQLServer存储过程

首先,贴出我失败的尝试吧,问题没有解决,希望日后有高手指点 简单的存储过程例子 USE [VIPDataTest_DB] GO /****** Object: StoredProcedure [...
  • shizhoulei
  • shizhoulei
  • 2015年04月29日 09:13
  • 1024

C++通过ADO调用存储过程

很久以前就在网上找了一些关于用C++调用数据库存储过程的文章,并用到了自己的项目中。网上的文章都是要定义_CommandPtr和_ParameterPtr类型的智能指针对象,然后用pCmd->Excu...
  • yeosn
  • yeosn
  • 2013年10月21日 10:35
  • 1731

使用ADO执行存储过程

文章不是我写的,是我搜集的。      在ADO中调用存储过程一直是一个困扰大家的问题。     其实,关于ADO调用存储过程的           方法在很多书中都有讲到,标准的做法无非是按照以下步...
  • hjyhh
  • hjyhh
  • 2008年02月19日 15:54
  • 2827

MFC---ADO 调用存储过程

界面: 存储过程:/* 话务统计信息查询。通过用户选定的小区(cellid),开始时间(startTime), 结束时间(endTime), 计算得到小时级话务量(avgTraff),小时级拥塞率(...
  • u012319493
  • u012319493
  • 2016年01月20日 20:41
  • 1131

ADO教程(执行带参数存储过程)

由于最近项目上要使用ADO访问数据库,而网上又没有非常完整的帖子,干脆摸着石头过河来总结一个ADO的使用;首先不得不说ADO的使用率并不是很高 1.ADO是微软提供的访问各种数据库的统一接口,是对底层...
  • liverpool_deng_lee
  • liverpool_deng_lee
  • 2017年05月25日 16:07
  • 510

用ADO连接SQL Server数据库

这篇文章不是介绍ADO连接数据库的原理的,而是写一下连接的步骤和简便方法。 一、获取连接字符串。 连接数据库时需要用到  _ConnectionPtr  对象的open方法,参数如下: HRES...
  • zhangkaihang
  • zhangkaihang
  • 2012年04月25日 18:23
  • 17710

VC中使用ADO调用存储过程

_ConnectionPtr m_pConnection; _CommandPtr m_pCommand;.cpp中在函数中执行//建立ado连接 HRESULT hr; hr=m_pConnecti...
  • max2008
  • max2008
  • 2007年06月10日 13:32
  • 952

ADO连接oracle数据库,并调用带参数的存储过程

这两天要写一个与oracle存储过程相关的测试程序,可恨自己对着一无所知,探索两天终于出来了,记录之,备以后留用。啦啦啦啦~~~~ first:连接oracle数据库。 工具:oracle 11g 环...
  • so_so_jiang
  • so_so_jiang
  • 2013年07月26日 17:02
  • 1217

Excel使用ADO调用SQL Server存储过程

前期使用Excel做一个现场投票的小软件,问题出在查看投票按钮上,起初只是使用SELECT语句查询,一切正常;后期对于投票结果需要进行一些权重的计算,过程比较复杂,便想到把计算过程放在SQL Serv...
  • zhanghongju
  • zhanghongju
  • 2015年03月25日 20:32
  • 3840

在ADO中如何调用存储过程

请见此篇文章      http://blog.csdn.net/hanxuemin12345/article/details/8620425   (三层架构——存储过程(在ADO.net中调用存储过...
  • hanxuemin12345
  • hanxuemin12345
  • 2013年02月22日 12:41
  • 1167
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ADO中sqlserver存储过程使用
举报原因:
原因补充:

(最多只允许输入30个字)