设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2402|回复: 1
打印 上一主题 下一主题

如何调用表变量

[复制链接]
跳转到指定楼层
1#
发表于 2006-12-6 18:15:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我声明了表变量,也成功将记录追加到表变量,

接下来我要调用表变量生成交叉表,但系统总提示我要声明表变量

ALTER procedure test
@PostID as int
AS
DECLARE @strSql as varchar(6000), @strTmpCol as varchar(1000)

DECLARE @tblTemp TABLE(OrderBy int,EmployeeID_Name varchar(50),ProductID int,ProductName varchar(50),ProductSpec varchar(50),Qty int)

INSERT INTO @tblTemp(OrderBy,EmployeeID_Name,ProductID,ProductName,ProductSpec,Qty)
SELECT dbo.产品表.排序, CONVERT(varchar, dbo.btj_Qry计件明细.计件雇员)
      + dbo.btj_Qry计件明细.姓名 AS 工号姓名, dbo.产品表.产品编号,
      dbo.产品表.产品名称, dbo.产品表.产品规格, dbo.btj_Qry计件明细.良品数
FROM dbo.产品表 INNER JOIN
      dbo.btj_Qry计件明细 ON
      dbo.产品表.产品编号 = dbo.btj_Qry计件明细.产品编号
WHERE (dbo.btj_Qry计件明细.计件日期 BETWEEN CONVERT(DATETIME,
      '2006-09-26 00:00:00', 102) AND CONVERT(DATETIME, '2006-10-25 00:00:00', 102))
      AND (dbo.btj_Qry计件明细.计件职场 = @PostID)


ECUTE ('DECLARE corss_cursor CURSOR FOR SELECT DISTINCT EmployeeID_Name from [url=mailto:'+@tblTemp+']'+@tblTemp+'[/url] for read only ')            
BEGIN
SET NOCOUNT ON
  SET @strSql ='SELECT OrderBy,ProductID,ProductName,ProductSpec, Sum(Qty) AS QtyTotal'

  OPEN corss_cursor
WHILE (0=0)
  BEGIN
    FETCH NEXT FROM corss_cursor
    INTO @strTmpCol
    IF (@@fetch_status<>0) BREAK
        SET @strSql = @strSql + ', Sum(CASE EmployeeID_Name WHEN ''' + @strTmpCol + ''' THEN Qty ELSE Null END) AS ['+ @strTmpCol+']'
  END
SET @strSql = @strSql + ' from [url=mailto:'+@tblTemp+']'+@tblTemp+'[/url] group by OrderBy,ProductID,ProductName,ProductSpec Order by OrderBy'

EXECUTE(@strSql)

  IF @@error <>0 RETURN @@error
  CLOSE corss_cursor
  DEALLOCATE corss_cursor RETURN 0

END


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2007-1-2 21:41:00 | 只看该作者
建议不要用ACCESS 2003直接写存储过程,相当垃圾.你可以用SQL 2000的查询分析器来输入,出错了也知道在哪行里.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-14 14:35 , Processed in 0.073039 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表