在asp中怎么调用带输出参数的存储过程
生活随笔
收集整理的這篇文章主要介紹了
在asp中怎么调用带输出参数的存储过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這是我寫的存儲過程 CREATE proc hz @count2 bigint output, @minsl varchar, @maxsl varchar as create table #tmp(qqno bigint,[check] tinyint,sumsl varchar) create table #tmp1(qqno bigint,friendqqno bigint,addtime datetime,[check] tinyint,sumsl varchar) insert into #tmp select qqno,[check],count(*) as count1 from friendtable group by qqno,[check] order by qqno insert into #tmp1 select #tmp.qqno,friendqqno,addtime,#tmp.[check],sumsl from #tmp left join friendtable on #tmp.qqno=friendtable.qqno where sumsl>=@minsl and sumsl<=@maxsl select @count2=count(*) from #tmp1 GO 在asp中 set o_command=server.createobject("ADODB.Command") set o_command.ActiveConnection=conn1 o_command.CommandText="hz" o_command.CommandType=4 set o_prm=o_command.parameters o_prm.Append o_command.CreateParameter("@count2",adinteger,adParamOutput) o_prm.Append o_command.CreateParameter("@minsl",advarchar,adParamInput,friends) o_prm.Append o_command.CreateParameter("@maxsl",advarchar,adParamInput,friends1) o_command.execute() count2=cmd("@count2") 為什么會出現這樣的錯誤呢? Microsoft VBScript 編譯器錯誤 錯誤 '800a03f6' 缺少 'End' /iisHelp/common/500-100.asp,行242 Microsoft OLE DB Provider for ODBC Drivers 錯誤 '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]過程 'hz' 需要參數 '@minsl',但未提供該參數。 /friendtable1.asp,行65
應該有declare吧
o_prm.Append o_command.CreateParameter("@count2",adinteger,adParamOutput,4) o_prm.Append o_command.CreateParameter("@minsl",advarchar,adParamInput,50) o_prm.Append o_command.CreateParameter("@maxsl",advarchar,adParamInput,50)
可能adinteger,adParamOutput沒賦值吧,在VB里adinteger,adParamOutput等一些常量是有值的,但在ASP中,需要自己為它符值 adCmdSPStoredProc = 4 adParamReturnValue = 4 adParaminput = 1 adParamOutput = 2 adInteger = 3 adVarChar = 200 好了,去試試吧,應該能行的
count2=賦值 minsl=賦值 maxsl=賦值 set rs=conn.execute("hz '"& count2 &"','"& minsl &"','"& maxsl &"'")
rs("count2")可以輸出
你在頁首加試一下 adovbs.inc這個文件在C:\Program Files\Common Files\System\ado下可以找到如沒找到將adInteger這些常量換成原值試一下!
CreateParameter([Name] , [type] , [Direction] , [Size] , [Value] ) 創建Command對象要使用的新參數。Name是新參數的名稱。Type是該參數的數據類型。你可以使用下表所示的任何數據類型: adBigInt 20 8字節有符號整數 adBinary 128 二進制值 adBoolean 11 布爾值 adBSTR 8 Null-中斷字符串(Unicode) adChar 129 字符串值 adCurrency 6 貨幣值 adDate 7 日期值 adDBDate 133 日期值(yyyymmdd) adDBTime 134 時間值(hhmmss) adDBTimeStamp 135 日期時間值(yyyymmddhhmmss) adDecimal 14 具有固定的精度和范圍的擴展數字型。 adDouble 5 雙精度浮點數值 adEmpty 0 空值 adError 10 32位錯誤碼 adGUID 72 全球唯一的標志碼 adIDispatch 9 指向一個OLE對象Idispatch的指針 adInteger 3 4字節有符號整數 adIUnknown 13 指向一個OLE對象Iunkown的指針 adLongVarBinary 205 長二進制值 adLongVarChar 201 長字符串值 adLongVarWChar 203 長NULL-中斷字符串值 adNumeric 131 具有固定的精度和范圍的擴展數字型。 adSingle 4 單精度浮點值 adSmallInt 2 2字節有符號整數 adTinyInt 16 1字節有符號整數 adUnsignedBigInt 21 8字節無符號整數 adUnsignedInt 19 4字節無符號整數 adUnsignedSmallInt 18 2字節無符號整數 adUnsignedTinyInt 17 1字節無符號整數 adUserDefined 132 未定義變量 adVarBinary 204 二進制值 adVarchar 200 字符串值 adVariant 12 OLE自動變量 adVarWchar 202 NULL-中斷Unicode字符串 adWchar 130 NULL-中斷Unicode字符串 Direction確定參數是輸入參數,輸出參數或存儲過程的返回值,下表描述了所有你可以使用的Direction值: 常數 值 描述 adParamInput 1 輸入參數(缺省值) adParamOutput 2 輸出參數 adParamInputOutput 3 輸入/輸出參數 adParamReturnValue 4 返回值 Size是參數的最大長度,以字節或字符為單位。Value是參數的值。
這樣的方法比較好用 參考一下吧 給存儲過程傳遞參數 : 如果存儲過程中不用參數,而是單一的sql語句,還顯示不出調用存儲過程的優勢! 比如說一bbs的查詢,可以按作者和主題查詢!則可以建立存儲過程如下: 參數keyword為關鍵字,choose是選擇查詢的方法。 CREATE PROCEDURE [dbo].[dt_bbs] @keyword varchar(20)=null, @choose int=null as if choose=1 select * from bbs where name like @keyword else select * from bbs where subject like @keyword return go 這樣我們調用存儲過程時只需將參數傳遞過去就行了,而省去在asp中來寫一段程序 用第一種方法: set rs=server.createobject("adodb.recordset") sql="exec dt_bbs '"&keyword&"',"&choose&"" rs.open sql,conn,1,1
總結
以上是生活随笔為你收集整理的在asp中怎么调用带输出参数的存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《银河英雄传说》杨威利经典语录1(田中芳
- 下一篇: 数据对象类代码的生成小工具