当前位置: 代码迷 >> Sql Server >> 急怎么在存储过程里设置变量的值?
  详细解决方案

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

热度:153   发布时间:2016-04-27 14:04:03.0
急急急!!!如何在存储过程里设置变量的值???
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时,[email protected],@A2赋值,上面的方法,显然是错误的,[email protected],不知道该如何写,才能给它们赋值。。。还请大侠们指点。。。
上面的实行结果是:
(1 行受影响)
消息 137,级别 15,状态 1,第 1 行
必须声明标量变量 "@A1"。
1
c
===============================
另外的问题print @A1为何会报错,变量也声明了。。。
[email protected],@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 [email protected]' exec sp_executesql @sql1, [email protected] int out,@id varchar(20)', @cou out ,@id select @cou
  相关解决方案