日期:2014-05-18  浏览次数:20429 次

存储过程中怎么使用字符串参数?
我想用字符串传递表名:

create   proc   [dbo].[DeleteMulti](@forumID   int,   @tableName   char(50))
AS
...

if   (Exists(Select   ID   from   @tableName   where   ParentID=@temp   and   ForumID=@forumID))
begin
select   @delID=ID   from   @tableName   Where   ParentID=@delID     and   ForumID=@forumID
set   @temp   =   @delID
end
...

为什么老说我没有声明@tableName变量呢?
@tableName不是传入的参数吗?


------解决方案--------------------
不能这样做的. 应该用动态sql
------解决方案--------------------
不能这样做的.

应该用动态sql
对的 表明不能传 必须拼!
------解决方案--------------------
Select ID from @tableName where ParentID=@temp and ForumID=@forumID

===============

FROM 字句中 表名 不支持使用参数
------解决方案--------------------
可以传递字符串的,用string传递
把你的代码全部贴上吧
------解决方案--------------------
CREATE PROCEDURE PROC_TEST (@TableName varchar(50)) AS exec( ' select Name from '+ @TableName + 'where ParentID <> 0 ') GO
------解决方案--------------------
只能帮顶了!!