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

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 )

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


...全文
82 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧