存储过程中可以用表名做参数吗?

zsanhong 2005-05-09 08:59:57
我有几个表中有相同的字段workDate,Note,想写一个存储过程同时将一些数据插入及更新到这些
表中,写了一个存储过程,却提示有语法错误,
如下:
CREATE PROCEDURE AddSpecialTaskToWorLog
@SomeDay Datetime,
@Msg varchar(1000),
@TableName varchar(50)
AS
insert into @TableName (workDate,Note) values (@SomeDay,@Msg)
GO
提示必须声明变量 @TableName,可是我已经申明了啊.高手帮忙.不胜感谢!
...全文
147 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsanhong 2005-05-09
  • 打赏
  • 举报
回复
to:Navywang917(一块臭豆腐)测试时出现"在xx表"中出现错误."
to:talantlee(為了她,再努力點!!!) 测试时出现 "第 1 行: '12' 附近有语法错误"
请问有没有方法可以知道,将参数传入存储过程后整个存储过程将要执行的sql语句.这样就可以发现错误在哪了.
---涛声依旧--- 2005-05-09
  • 打赏
  • 举报
回复
在T-SQL中﹐兩個單綽號''表示一個單引號'
如﹕
select ''''
zsanhong 2005-05-09
  • 打赏
  • 举报
回复
谢谢!就是不清楚为什么有时候用'号,有时候用'''将字符串联接起来.还有如果要更新数据的过程怎样写,我这样写:
CREATE PROCEDURE UpdateSpecialTaskToWorLog
@SomeDay Datetime,
@Msg varchar(1000),
@TableName varchar(50)
AS
exec('update '''+ @TableName +''' set Note='''+@Msg+''' where datediff(day,workdate,'''+@SomeDay+''')=0')
GO
测试不对.
talantlee 2005-05-09
  • 打赏
  • 举报
回复
CREATE PROCEDURE AddSpecialTaskToWorLog
@SomeDay Datetime,
@Msg varchar(1000),
@TableName varchar(50)
AS
exec('insert into '+ @TableName +'(workDate,Note) values ('+@SomeDay+','+@Msg+')')
tdtjitxypm 2005-05-09
  • 打赏
  • 举报
回复
exec('select * from '+''+@d+'')
talantlee 2005-05-09
  • 打赏
  • 举报
回复
對隻能用動態語句傳遞表名
Navywang917 2005-05-09
  • 打赏
  • 举报
回复
你上面的方式是不可以用表名做参数的!
可以改为
CREATE PROCEDURE AddSpecialTaskToWorLog
@SomeDay Datetime,
@Msg varchar(1000),
@TableName varchar(50)
AS
exec('insert into '''+ @TableName +'''(workDate,Note) values ('''+@SomeDay+''','''+@Msg+''')')
GO
zsanhong 2005-05-09
  • 打赏
  • 举报
回复
在线等待!
Navywang917 2005-05-09
  • 打赏
  • 举报
回复
CREATE PROCEDURE AddSpecialTaskToWorLog
@SomeDay Datetime,
@Msg varchar(1000),
@TableName varchar(50)
AS
exec('insert into '+ @TableName +'(workDate,Note) values ('''+@SomeDay+''','''+@Msg+''')')
GO
这样就对了

34,590

社区成员

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

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