【软件技术】关于sql中表名作为变量
(2014-07-26 11:10:54)
标签:
sqlit |
分类: 软件技术 |
一段存储过程语句,想让表名作为变量,代码如下:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE proc [dbo].[abc]
@tablename varchar(20)
AS
BEGIN
SET NOCOUNT ON;
select * from
@tablename
END
GO
执行显示如下错误:
消息 156,级别 15,状态 1,第 2 行
关键字 'proc' 附近有语法错误。
消息 1087,级别 15,状态 2,第 7 行
必须声明表变量 "@tablename"。
百度了一下,原来表名不能作为变量,想想也对,不同的表有不同的字段,如果让表名作为变量,字段是不可预知的,如果让表名作为变量,不合逻辑。
如何解决呢?
大家说要用动态的SQL语句,什么是动态的SQL语句呢?就是构造一个可以执行的“SQL命令字符串”。
然后用exec执行这个名称串。
代码修改为:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE
proc [dbo].[abc]
@tablename
varchar(20)
AS
BEGIN
declare @sqlcommand
varchar(max)
--sql名称串变量
END
GO
前一篇:劲霸董事长的一封信[转]