注册 登录
编程论坛 SQL Server论坛

sql server2008 存储过程 及游标使用问题请教

hzfyxdwf 发布于 2016-11-21 11:56, 1780 次点击
各位大神: 现在我需要在SQL 里实现如下案例的一个功能。并且需要按设定的周期去调用执行。

实现效果案例如:
源数据表 结构:
商品代码,商品名称,商品数量
0101 ,  AAA,2
0102,BBB,3

我想通过数量来变成新表。几个数量就几行
商品代码,商品名称,商品数量
0101,AAA,2
0101,AAA,2
0102,BBB,3
0102,BBB,3
0102,BBB,3
------------------------------
然后我想到了用游标,循环 和存储过程。我之前是有做过ORACEL 的应用的,在ORACEL 写的语句块是会写的。代码如下:
---------------------------------------------
DELCARE
  VCNT INT;
  CURSOR C IS
    SELECT CODE,NAME,CNT FROM TABLE1;
BEGIN
FOR R IN C LOOP
   VCNT:=
   WHILE VCNT<>0 LOOP
      INSERT INTO TABLE2 SELECT * FROM TABLE1;
      VCNT :=VCNT-1;
   END LOOP;
END LOOP;
COMMIT;
END;



----------------------------------------------------

可是 在SQL server里我就不知道怎么操作怎么写了。语法似乎都不一样。
特在此请教。如果有回的帮忙写一段存储过程的代码。只要实现我要的那个效果即可。我写的代码可以忽略。
问题:1.是不是创建一个存储过程即可,在SQLSERVER2008 数据库管理界面新建存储过程,然后录入代码。
2. 代码要怎么写。
3.怎么让他定时执行。


谢谢!
2 回复
#2
厨师王德榜2016-11-21 16:01
有一点语法上的区分,无非是关键字不同,现在没时间改代码,我直接举例,你对照一下即可,反正你以前在Oracel做过,应该是老司机:
程序代码:
   
DECLARE CKC1 CURSOR FOR   
    SELECT GCDM,CCDDM,WLDM,SUM(FXZKC) KC1
    FROM FACT_KCZT
    GROUP BY GCDM,CCDDM,WLDM --定义游标
    OPEN CKC1  -- 打开游标。
    -- 滚动游标,并把数据放入变量(变量要事先定义好)
    FETCH NEXT FROM CKC1 into @kcgcdm ,@kckw ,@kcwl ,@kcsl
    Set @kcrecn=@@FETCH_STATUS
    --PRINT @@ROWCOUNT
    --PRINT @@FETCH_STATUS
    while @kcrecn<>-1
    begin
    ......
    END
     CLOSE CKC1  -- 关闭游标
  DEALLOCATE ckc1  -- 释放游标。
#3
mywisdom882016-11-21 16:55
看不明白,不知道你想做什么功能。。。
1