存储过程如下,我想把表名,字段,值都用变量表示,为什么不行,请高手指点,谢谢
ALTER PROCEDURE [dbo].[sp_Insert]
@tbName varchar(255),
@strFields varchar(2000),
@strValues varchar(8000)
AS
declare @strSQL varchar(8000)
begin
SET NOCOUNT ON;
Insert into @tbName(@strFields)values(@strValues)
end
------解决思路----------------------
你参考一下,动态执行
ALTER PROCEDURE [dbo].[sp_Insert]
@tbName varchar(255),
@strFields varchar(2000),
@strValues varchar(8000)
AS
declare @strSQL varchar(8000)
begin
SET NOCOUNT ON;
SET @strValues=REPLACE(@strValues,'''','''''')
EXEC('Insert into '+@tbName+'('+@strFields+')values('+@strValues+')')
end
------解决思路----------------------
呃,你是问这个?
这个在语法上是不允许的,语法是要求有一定规距的,该关键字的地方要关健字,该对象名的地方就要对象名,标识符的地方目前还不支持用变量代替
至少目前SQL还做不到完全动态去处理用户的语句
我类举下,你要的那种情况
DECLARE @D VARCHAR(10)如果能这样,以上的代码你看了是什么感觉~~
SET @D='DECLARE'
@D @S VARCHAR(10)
SET @S='SET'
@D @E VARCHAR(10)
@S @E='='
@D @V VARCHAR(10)
@S @V@E'VARCHAR(10)'
@D @AL @V
SET @AL@E'ALERT'
--