这么调用存储过程规范吗

ningweidong 2010-09-19 05:06:00
我前一段在看存储过程,于是自己写了一个,但我不知道写的规范不规范,因为我在网上找实例找不到。
存储过程
CREATE PROCEDURE sp_getcount
@id varchar(50),
@pwd varchar(50),
@num int output
AS
select @num = count(*) from operator --返回用户和密码都正确的记录条数
where opno = @id and oppwd = @pwd
GO
我在查询管理器这么调用
declare @num int
exec sp_getcount '001','123',@num output
print @num

vb调用存储过程
Dim pa As New ADODB.Parameter
Dim adocommand As New Command

adocommand.ActiveConnection = adoConn
adocommand.CommandType = adCmdStoredProc
adocommand.CommandText = "sp_getcount"

Set pa = adocommand.CreateParameter("id", adVarWChar, adParamInput, 50)
pa.Value = "001"
adocommand.Parameters.Append pa

Set pa = adocommand.CreateParameter("pwd", adVarWChar, adParamInput, 50)
pa.Value = "12"
adocommand.Parameters.Append pa

Set pa = adocommand.CreateParameter("num", adInteger, adParamOutput)
pa.Value = -2
adocommand.Parameters.Append pa

'Set adoRec = adoCommand.Execute
adocommand.Execute
MsgBox adocommand.Parameters("num")
程序运行也正常,因为我在网上找实例,没有找到,有几个也写得很乱。
请各位帮我看一下,这么写规范吗?你们是怎么写调用存储过程的代码,能不能发个例子给我看一下。
...全文
110 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
射天狼 2010-09-25
什么是规范,定下一个标准,以后按照这个执行,这就是规范~~~
回复
zuoxingyu 2010-09-20

'-------------------------------------
' 名称:SP_FORSQL
' 功能:3G版本,把SQL命令转到存储过程进行事务处理
' 在写任务的时候,原来的写命令表,任务对应表,都是单独的SQL执行,没有使用事务控制,会产生错误。
' 现在不修改以前的SQL语句,只把几条SQL转到存储过程来执行,加上事务控制
' 参数:
' SqlCMD1 第一条SQL语句
' SqlCMD2 第二条SQL语句
' SqlCMD3 第三条SQL语句

' 程序编写:ZXY
' 日期: 2009年11月12日
'-------------------------------------
Public Sub SP_FORSQL(Optional ByVal SqlCMD1 As String = "", Optional ByVal SqlCMD2 As String = "", Optional ByVal SqlCMD3 As String = "", Optional ByVal SqlCMD4 As String = "", Optional ByVal SqlCMD5 As String = "")
Dim cmd As New ADODB.Command
Dim par As ADODB.Parameter
Dim OrderID As Long
Dim rs As New ADODB.Recordset
'On Error GoTo Myerror
With cmd
.ActiveConnection = cnn
.CommandType = adCmdStoredProc
.CommandText = "SP_FORSQL"

Set par = .CreateParameter("@SqlCMD1", adVarWChar, adParamInput, 8000, SqlCMD1)
.Parameters.Append par

Set par = .CreateParameter("@SqlCMD2", adVarWChar, adParamInput, 8000, SqlCMD2)
.Parameters.Append par

Set par = .CreateParameter("@SqlCMD3", adVarWChar, adParamInput, 8000, SqlCMD3)
.Parameters.Append par

Set par = .CreateParameter("@SqlCMD4", adVarWChar, adParamInput, 8000, SqlCMD4)
.Parameters.Append par

Set par = .CreateParameter("@SqlCMD5", adVarWChar, adParamInput, 8000, SqlCMD5)
.Parameters.Append par

.Execute

End With

'cnn.BeginTrans
' If SqlCMD1 <> "" Then cnn.Execute SqlCMD1
' If SqlCMD2 <> "" Then cnn.Execute SqlCMD2
' Set rs = cnn.Execute("SELECT MAX(order_id) AS a FROM orderoperate")
' OrderID = rs.Fields(0).Value
' If SqlCMD3 <> "" Then cnn.Execute Replace(SqlCMD3, "?", OrderID)
'
'cnn.CommitTrans

'Myerror:
'cnn.RollbackTrans
' MsgBox Err.Description
End Sub


我是这么写的。
回复
孤独剑_LPZ 2010-09-19
dim cn as New ADODB.Connection
Dim rs As new ADODB.Recordset
cn.Open "Provider=sqloledb;Data Source=IP地址;Initial Catalog=数据库;User Id=用户名;Password=密码"

Set rs = cn.Execute("ZY_RUNSTAT_DEPT '" & 参数1 & "'," & "'" & 参数2 & "'," & "'" & 参数3 & "'")
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2010-09-19 05:06
社区公告
暂无公告