请教动态表名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
就是表名是动态的整了一天了,郁闷
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)
木有问题啊
set @table='tb'
print('SELECT SELECT 领用部门,物料编号,主数量 from '+@TABLE)
木有问题啊
作者: fredrickhu 发布时间: 2011-12-22
你加上游标试下
作者: wangjun2632 发布时间: 2011-12-22
你这个要试试用
exec SP_EXECUTESQL
来动态执行,并且,游标要作为参数传出来,而且还要用 VARYING output 关键字.
exec SP_EXECUTESQL
来动态执行,并且,游标要作为参数传出来,而且还要用 VARYING output 关键字.
作者: qianjin036a 发布时间: 2011-12-22
弄不出来,我还是使用一个新表来保存查询结果在查这个新表来的简单点
作者: wangjun2632 发布时间: 2011-12-22
要动态,就连游标一起做成动态,问题应该出在这里。
作者: kuqideyupian 发布时间: 2011-12-22
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28