读书人

急怎么在存储过程里设置变量的值?

发布时间: 2012-03-29 12:53:13 作者: rapoo

急急急!!!如何在存储过程里设置变量的值???
if object_id('table1') is not null
drop table table1
go
create table table1
(
Field1 varchar(100),
Field2 varchar(100),
Field3 varchar(100)
)
go
insert into table1 values('1','2','3')
go
if object_id('Pro1') is not null
drop PROCEDURE Pro1
go
CREATE PROCEDURE [dbo].[Pro1](
@strWhere varchar(500) = NULL
)
AS
begin
DECLARE @strSql nvarchar(max)
DECLARE @A1 varchar(100)
DECLARE @A2 varchar(100)

set @A1 = 'c'
SET @strSql= 'select @A1=Field1,@A2=Field2 from table1 ' + @strWhere

EXEC sp_executesql @strSql
print 1
print @A1
end
go
exec dbo.Pro1 ' where Field3=''3'''
问题:在调试存储过程Pro1时,不知道如何给@A1,@A2赋值,上面的方法,显然是错误的,但是我为了加上条件@strWhere,不知道该如何写,才能给它们赋值。。。还请大侠们指点。。。
上面的实行结果是:
(1 行受影响)
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@A1"。
1
c
===============================
另外的问题print @A1为何会报错,变量也声明了。。。
我希望的结果是打印出@A1的值是1,@A2的值是2。。。

[解决办法]

SQL code
--示例declare @sql1 nvarchar(2000) declare @cou int declare @id nvarchar(20) set @id='1' set @sql1='select @count=count(*) from tablea where id=@id' exec sp_executesql @sql1, N'@count int out,@id varchar(20)', @cou out ,@id select @cou 

读书人网 >SQL Server

热点推荐