这个存储过程为什么会报错?

泡泡鱼_ 2005-01-12 03:07:05
CREATE PROCEDURE sp_Pub_RecordCount

(
@Tbname nvarchar(100)
)

AS
SELECT COUNT(*) AS RecordCount FROM @Tbname

报错:必须声明变量@Tbname
这是为什么呀??
...全文
85 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lyzhdxx 2005-01-12
  • 打赏
  • 举报
回复
表名字不能作为变量,在存储过程中
泡泡鱼_ 2005-01-12
  • 打赏
  • 举报
回复
谢谢,我知道怎么用了!!!
ReViSion 2005-01-12
  • 打赏
  • 举报
回复
什么符号呀
'SELECT COUNT(*) AS RecordCount FROM ' 和' WHERE ' 是做为一个字符串
变量是不可以放入字符串中的,否则就不是变量是字符了
泡泡鱼_ 2005-01-12
  • 打赏
  • 举报
回复
可以请你给我具体的解释一下
EXEC('SELECT COUNT(*) AS RecordCount FROM '+@Tbname+' WHERE '+@filter)
这一句中那些符号的含义吗??
我以前建存储过程的时候也经常出现这样的问题,想一次搞清楚咯!!
拜托了!!
ReViSion 2005-01-12
  • 打赏
  • 举报
回复
不对应该是这样
ALTER PROCEDURE sp_Pub_RecordCount

(
@Tbname nvarchar(100),--表名
@Filter nvarchar(1000)=''--条件查询
)

AS
IF @Filter IS NULL OR @Filter=''
EXEC('SELECT COUNT(*) AS RecordCount FROM '+@Tbname)
ELSE
EXEC('SELECT COUNT(*) AS RecordCount FROM '+@Tbname+' WHERE '+@filter)
泡泡鱼_ 2005-01-12
  • 打赏
  • 举报
回复
那如果我加个条件判断呢?你看看是这样写吗?
ALTER PROCEDURE sp_Pub_RecordCount

(
@Tbname nvarchar(100),--表名
@Filter nvarchar(1000)--条件查询
)

AS
IF @Filter IS NULL OR @Filter=''
EXEC('SELECT COUNT(*) AS RecordCount FROM '+@Tbname)
ELSE
EXEC(SELECT COUNT(*) AS RecordCount FROM '+@Tbname+' WHERE '+@filter+')
ReViSion 2005-01-12
  • 打赏
  • 举报
回复
数据库对象不可以放字符串中来表示。
泡泡鱼_ 2005-01-12
  • 打赏
  • 举报
回复
我这样写过
EXEC(SELECT COUNT(*) AS RecordCount FROM '+@Tbname+')

这样为什么不行呢?
或者请你解释一下,你写的那个为什么可以,好吗?
pbsql 2005-01-12
  • 打赏
  • 举报
回复
exec('SELECT COUNT(*) AS RecordCount FROM '+@Tbname)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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