在查询分析器中执行建立存储过程:
CREATE procedure recordCount
(
@strWhere nvarchar(500)='',
@count int output
)
as
declare @sqlStr nvarchar(1000)
if @strWhere != ''
set @sqlStr = N'select @COUNT = count(id) from get_zhaoshang where 1=1 ' + @strWhere
else
set @sqlStr = N'select @COUNT = count(id) from get_zhaoshang'
exec sp_executesql @sqlStr,N'@count int output',@count output
GO
ASP程序中调用:
Set MyComm = Server.CreateObject("ADODB.Command")
MyComm.ActiveConnection = objconn
'MyConStr是数据库连接字串
MyComm.CommandText = "recordCount"
'指定存储过程名
MyComm.CommandType = 4
'表明这是一个存储过程
MyComm.Prepared = true
'要求将SQL命令先行编译
@strWhere:数据库查询where条件
MyComm.Parameters.append MyComm.CreateParameter("@strWhere",200,1,500,SearchChar1)'输入参数
MyComm.Parameters.append MyComm.CreateParameter("@count",3,2)'输出参数
MyComm.Execute
'取得出参
TotalRs= MyComm.Parameters("@count").value
response.write TotalRs
Set MyComm = Nothing
如果对存储过程还有不清楚的地方可以查询以下网址:
2.
用 sp_executesql 解决字段名、表名不能用变量的问题
执行存储过程时到底要不要加 exec
T-SQL 字符串前加 N 是什么意思