• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

请大家指点一下,急 急 急!!!!!

feeling_vb 2004-12-15 09:29:09
ALTER proc test
@tablename varchar(100)
as
--declare @strSql varchar(1000)
declare @intC int

Select @intC =select count(*) from @tablename

if @intC>0
print 1
else
return 0

我这样写,他报错

服务器: 消息 156,级别 15,状态 1,过程 test,行 8
在关键字 'select' 附近有语法错误。
服务器: 消息 137,级别 15,状态 1,过程 test,行 10
必须声明变量 '@tablename'。

如果我这样写

ALTER proc test
@tablename varchar(100)
as
declare @strSql varchar(1000)
declare @intC int

Select @strSql='select count(*) from '+@tablename+' '
exec ( @strSql )

可以执行,但是我怎么知道它执行的结果集是几条记录呢????请赐教,我会在线等待!!


...全文
63 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feeling_vb 2004-12-15
如果并发执行会受影响吗??谢谢
回复
dulei115 2004-12-15
@@ROWCOUNT
返回受上一语句影响的行数。

语法
@@ROWCOUNT

返回类型
integer

注释
任何不返回行的语句将这一变量设置为 0 ,如 IF 语句。
回复
dulei115 2004-12-15
set @strSql='select * from ' + @tablename
exec(@strsql)
if @@rowcount > 0
print 1
else
print 0
回复
dulei115 2004-12-15
坏就坏在你的动态表,必须使用
exec()来执行SQL语句,而其中不能用局部变量,必须使用全局变量
回复
feeling_vb 2004-12-15
表是一个动态的表,然后查询这个表中的纪录!!

如果表中的纪录为1,执行一些操作,如果 为 0 执行另外一些操作!!
回复
dulei115 2004-12-15
说一下你的这个存储过程用来干什么的
回复
feeling_vb 2004-12-15
你测试通过吗??? 我怎么通不过???
回复
chenyuandxm 2004-12-15
ALTER proc test
@tablename varchar(100)
as
declare @intC int

set @intC =select count(*) from @tablename

if @intC>0
print 1
else
return 0
回复
dulei115 2004-12-15
ALTER proc test
@tablename varchar(100)
as
declare @strSql varchar(1000)
declare @@intC int

set @strSql='select @@intC = count(*) from ' + @tablename
exec (@strSql)
回复
feeling_vb 2004-12-15
这样不行,我试过了,错误如下:

服务器: 消息 137,级别 15,状态 2,过程 test,行 10
必须声明变量 '@tablename'。
回复
dulei115 2004-12-15
select @intC = count(*) from @tablename
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2004-12-15 09:29
社区公告
暂无公告