如何用表名作参数 出错

勉励前行 2011-05-28 10:16:02
CREATE PROCEDURE [dbo].[TransTB]
@tablename varchar(254)
AS
declare @sql nvarchar(1280)
BEGIN
set @sql =
'
UPDATE @tablename
SET ID_ManuParts = 40
where ID_ManuParts = 458

UPDATE @tablename
SET ID_ManuParts = 50
where ID_ManuParts = 1352

UPDATE @tablename
SET ID_ManuParts = 60
where ID_ManuParts = 1353

UPDATE @tablename
SET ID_ManuParts = D.更改
FROM @tablename LEFT JOIN
(SELECT C.ID ,B.Part,B.Change FROM (
SELECT Name, Part,Change FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',
''Data Source="d:\kqshare\TransDayWorks.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'')...[a$]) B
LEFT JOIN dbo.Manufacture C ON B.Name = C.UniCode) as D
ON @tablename.ID_Manufacture = D.ID AND @tablename.ID_ManuParts = D.Part
WHERE D.ID is not null and D.Change is not null
'
EXECUTE sp_executesql @sql
END


执行过程:EXEC TransTB MP_WorkRecord_ACF
报錯:
Msg 1087, Level 15, State 2, Line 2
必須宣告資料表参数數 "@tablename"。

问过程该如何写
...全文
130 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
快溜 2011-05-28
  • 打赏
  • 举报
回复
动态拼接字符串,用exec执行,你这样写肯定是没有该表的。
--小F-- 2011-05-28
  • 打赏
  • 举报
回复
表名做参数 需要动态拼接
叶子 2011-05-28
  • 打赏
  • 举报
回复

CREATE PROCEDURE [dbo].[TransTB]
@tablename varchar(254)
AS
declare @sql nvarchar(1280)
BEGIN
set @sql =
'
UPDATE '+@tablename+'
SET ID_ManuParts = 40
where ID_ManuParts = 458

UPDATE '+@tablename+'
SET ID_ManuParts = 50
where ID_ManuParts = 1352

UPDATE '+@tablename+'
SET ID_ManuParts = 60
where ID_ManuParts = 1353

UPDATE '+@tablename+'
SET ID_ManuParts = D.更改
FROM '+@tablename+' LEFT JOIN
(SELECT C.ID ,B.Part,B.Change FROM (
SELECT Name, Part,Change FROM OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',
''Data Source="d:\kqshare\TransDayWorks.xls";User ID=Admin;Password=;Extended properties=Excel 5.0'')...[a$]) B
LEFT JOIN dbo.Manufacture C ON B.Name = C.UniCode) as D
ON @tablename.ID_Manufacture = D.ID AND @tablename.ID_ManuParts = D.Part
WHERE D.ID is not null and D.Change is not null
'
EXECUTE sp_executesql @sql
END


动态拼接,变量要在外面。

34,590

社区成员

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

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