Dim myconn As New ADODB.Connection
Dim mycmd As New ADODB.Command
myconn.ConnectionString = cnctstr ‘连接字符串
myconn.Open
mycmd.ActiveConnection = myconn
Dim myset As New ADODB.Recordset
myset.ActiveConnection = myconn myset.Open ("select * from sysobjects where name='w_exist_yy' and type='p'") If myset.BOF = True And myset.EOF = True Then ‘新还原的数据库有w_exist_yy存储过程不执行这里 mycmd.CommandType = adCmdText
Dim s As String
s = " create procedure w_exist_yy" _
& " @reg char(1) = '0' output," _
& " @partname char(256) ='' output," _
& " @autotime int =0 output,@netcardno char(20) output," _
& " @limittime int =200," _
& " @limitcount int =2000" _
& " With recompile" _
& " as" _
& " set @netcardno='false'" _
& " set @partname='图书馆'" _
& " set @autotime=1" _
& "set @reg='2'"
mycmd.CommandText = s
mycmd.Execute
End If
mycmd.CommandType = adCmdStoredProc
mycmd.CommandText = "w_exist_yy"
'请重点解释以下
Dim reg As New ADODB.Parameter
reg.Size = 1
reg.Type = adChar
reg.Name = "@reg"
reg.Direction = adParamOutput '什么意思
mycmd.Parameters.Append reg '什么意思?
mycmd.Execute
regs = CInt(reg.Value) ’重点是reg的值是如何得到的?
Dim mycmd As New ADODB.Command
myconn.ConnectionString = cnctstr ‘连接字符串
myconn.Open
mycmd.ActiveConnection = myconn
Dim myset As New ADODB.Recordset
myset.ActiveConnection = myconn myset.Open ("select * from sysobjects where name='w_exist_yy' and type='p'") If myset.BOF = True And myset.EOF = True Then ‘新还原的数据库有w_exist_yy存储过程不执行这里 mycmd.CommandType = adCmdText
Dim s As String
s = " create procedure w_exist_yy" _
& " @reg char(1) = '0' output," _
& " @partname char(256) ='' output," _
& " @autotime int =0 output,@netcardno char(20) output," _
& " @limittime int =200," _
& " @limitcount int =2000" _
& " With recompile" _
& " as" _
& " set @netcardno='false'" _
& " set @partname='图书馆'" _
& " set @autotime=1" _
& "set @reg='2'"
mycmd.CommandText = s
mycmd.Execute
End If
mycmd.CommandType = adCmdStoredProc
mycmd.CommandText = "w_exist_yy"
'请重点解释以下
Dim reg As New ADODB.Parameter
reg.Size = 1
reg.Type = adChar
reg.Name = "@reg"
reg.Direction = adParamOutput '什么意思
mycmd.Parameters.Append reg '什么意思?
mycmd.Execute
regs = CInt(reg.Value) ’重点是reg的值是如何得到的?
我也刚学存储过程,请详细些解释 谢谢!! Dim sql1 As String
Dim sql2 As String
sql1 = " create procedure w_exist_yy" _
& " @reg char(1) = '0' output," _
& " @partname char(256) ='' output," _
& " @autotime int =0 output,@netcardno char(20) output," _
& " @limittime int =200," _
& " @limitcount int =2000 " _
& " With encryption" _
& " as" _
& " set @netcardno='" & netno & "'" _
& " set @partname='" & partname & "'" _
& " set @autotime=0" _
& " create table #tb1(re varchar(255))" _
& " insert into #tb1 exec master..xp_cmdshell 'ipconfig /all'" _
& " declare @ss char(20)" _
& " set @ss= (select top 1 substring(re,charindex(':',re)+1,255) as ids from #tb1 where re like '%Physical Address. . . . . . . . . :%' )" _
& " if len(rtrim(ltrim(@ss)))>1 set @ss= substring(@ss,2,17) else set @ss ='11-11-11-11-11-11'" _
& " if @netcardno=@ss" _
& " begin" _
& " set @reg='1'" _
& " Return" _
& " end" _
& " else " _
& " begin" _
& " if @autotime>=@limittime"
sql2 = " begin" _
& " set @reg=3 " _
& " Return" _
& " End" _
& " if (select count(id) from yjs_wxmain)>= @limitcount" _
& " begin" _
& " set @reg=4" _
& " Return" _
& " End" _
& " set @reg=2 /*未注册,但可用*/" _
& " End"
mycmd.CommandText = sql1 + sql2
我就是不明白在哪里存储着 reg.value的值呢 ??
是这样吧
reg代表存储过程的参数
adParamOutput 代表是返回值//mycmd.Parameters.Append reg '
给存储过程传递参数
//reg.value
返回的是存储过程中的参数
@reg char(1) = '0' output
//reg.value
返回的是存储过程中的参数
@reg char(1) = '0' output
我觉得是返回 & " set @reg=2 /*未注册,但可用*/" _ 2这个值吧
可以用用执行脚本的方法。