首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql server存储过程赋值有关问题

2013-09-05 
sql server存储过程赋值问题关于exec(sql语句)赋值问题,DECLARE @count int, @sql VARCHAR(1000), @flag V

sql server存储过程赋值问题
关于exec(sql语句)赋值问题,


DECLARE @count int, @sql VARCHAR(1000), @flag VARCHAR(20)
SET @flag=SUBSTRING(@rwzt, CHARINDEX('_', @rwzt)+1, len(@rwzt))

SET @sql = 'SELECT @COUNT = COUNT(xx) from xxx WHERE delflg=''' + @flag+''''
SET @count = EXEC(@sql)


我想讲EXEC(@sql)执行的结果赋值给count,因为count在接下来的过程中,要做判断, 但是现在保存存储过程时报错说
[Err] 42000 - [SQL Server]关键字 'EXEC' 附近有语法错误。
哪位大侠遇到过,请指教,坐等 sql?server 2005 存储 赋值
[解决办法]
  set @num=N'select @b=count(*) from '+ @tablename
  exec sp_executesql @num,N'@b int output',@b output

[解决办法]
DECLARE @count int, @sql NVARCHAR(1000), @flag VARCHAR(20), @rwzt VARCHAR(2000)
SET @flag=SUBSTRING(@rwzt, CHARINDEX('_', @rwzt)+1, len(@rwzt))
         
SET @sql = N'SELECT @COUNT = COUNT(xx) from xxx WHERE delflg=@flag'
EXEC sp_executesql @sql, N'@COUNT INT OUTPUT, @flag varchar(20)', @count OUTPUT, @flag

[解决办法]
引用:
Quote: 引用:

  set @num=N'select @b=count(*) from '+ @tablename
  exec sp_executesql @num,N'@b int output',@b output

那我上面要怎么修改才行?
楼下神速改好了。。。
[解决办法]
引用:
Err] 42000 - [SQL Server]过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。

我想让这个存储过程执行时,不需要传参的。

楼主的@sql参数必需是nvarchar类型。

DECLARE @count int, @sql NVARCHAR(1000), @flag VARCHAR(20), @rwzt VARCHAR(2000)
SET @flag=SUBSTRING(@rwzt, CHARINDEX('_', @rwzt)+1, len(@rwzt))
SET @flag = 'rpc'
          
SET @sql = N'SELECT @count = COUNT(number) from master..spt_values where name = @flag'
PRINT @sql
EXEC sp_executesql @sql, N'@flag varchar(20), @count INT OUTPUT', @flag,  @count OUTPUT

IF(@count > 0)
SELECT @count
ELSE 
SELECT 0
/*
(无列名)
1
*/

[解决办法]
纠正楼主一个错误哈

SET @sql = 'SELECT @COUNT = COUNT(xx) from xxx WHERE delflg=''' + @flag+''''        EXEC(@sql) 
SELECT @count  --这样就可以得到@count的值

[解决办法]
try this,

declare @count int, @sql nvarchar(1000), @flag nvarchar(20)

set @flag=substring(@rwzt,charindex('_', @rwzt)+1,len(@rwzt))
   
set @sql=N'SELECT @C=COUNT(xx) from xxx WHERE delflg='''+@flag+N''' '
    
exec sp_executesql @sql,N'@C int output',@C=@count output

select @count

热点排行