+ -
当前位置:首页 → 问答吧 → 请教动态表名SQL语句应该怎么写

请教动态表名SQL语句应该怎么写

时间:2011-12-22

来源:互联网

USE [database]
GO
/****** Object: StoredProcedure [dbo].[HEDUIKUCUN] Script Date: 12/21/2011 14:56:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[HEDUIKUCUN]
@TABLEPATH VARCHAR(1000)

AS
DECLARE @TABLE VARCHAR(1000)
DECLARE @LYBM VARCHAR(50)
DECLARE @WLBH VARCHAR(50)
DECLARE @CKSL FLOAT
DECLARE @ID VARCHAR(20)
DECLARE @CURSOR CURSOR
DECLARE @JHCURSOR CURSOR
BEGIN 

SET @TABLE='openrowset(''Microsoft.jet.OleDB.4.0'',''Excel 5.0;HDR=Yes;database='+@TABLEPATH+';'',[表单1$])'
SET @CURSOR=CURSOR FOR

SELECT 领用部门,物料编号,主数量 from @TABLE
--EXEC('SELECT SELECT 领用部门,物料编号,主数量 from '+@TABLE)
--这样也是不行,担示应为SELECT 或WITH
OPEN @CURSOR
fetch next from @cursor into @LYBM,@WLBH,@CKSL
WHILE(@@FETCH_STATUS=0)
BEGIN


SET @JHCURSOR=CURSOR FOR

select * from TABLE1
open @JHCURSOR
fetch next from @JHCURSOR into @ID
WHILE (@@FETCH_STATUS=0)

BEGIN
UPDATE TABLE2 SET 数量=数量-@CKSL WHERE ID=@ID AND LYBM=@LYBM AND WLBH=@WLBH
fetch next from @JHCURSOR into @ID
END
CLOSE @JHCURSOR
fetch next from @cursor into @LYBM,@WLBH,@CKSL
END
CLOSE @CURSOR

END


消息 1087,级别 16,状态 1,过程 HEDUIKUCUN,第 18 行
必须声明表变量 "@TABLE"。

运行环境 SQL SERVER 2008 

就是表名是动态的整了一天了,郁闷

作者: wangjun2632   发布时间: 2011-12-22

declare @table varchar(100)
set @table='tb'

print('SELECT SELECT 领用部门,物料编号,主数量 from '+@TABLE)

木有问题啊

作者: fredrickhu   发布时间: 2011-12-22

你加上游标试下

作者: wangjun2632   发布时间: 2011-12-22

你这个要试试用
exec SP_EXECUTESQL 
来动态执行,并且,游标要作为参数传出来,而且还要用 VARYING output 关键字.

作者: qianjin036a   发布时间: 2011-12-22

弄不出来,我还是使用一个新表来保存查询结果在查这个新表来的简单点

作者: wangjun2632   发布时间: 2011-12-22

要动态,就连游标一起做成动态,问题应该出在这里。

作者: kuqideyupian   发布时间: 2011-12-22