• MSSQL数据库:存储过程实例学习(1)从两个表中取出头两行,然后合并到一个表中


          这个例子里面我们从两个表中取出头两行,然后合并到一个表中。

      在现实中我们常常会遇到这样的情况,在一个数据库中存在两个表,假设表1储存着公司个产品本季度销售信息,表2储存着公司本季度欠款金额情况。在一个页面中我们想把这两个信息显示出来。通常的做法是在程序中进行两次SQL查询,返回两个结果集,在分别显示出来,非常麻烦。

      下面是实现这个功能的代码:

      CREATE PROCEDURE test
      AS
       SET NOCOUNT ON --指示存储过程不返回查询影响的行数
       DECLARE @col1c varchar(20),@col2c varchar(20), @index int
       SET @index = 1
       CREATE TABLE #tmptbl --创建一个临时表,用于储存我们的结果
       (
        colID int IDENT99vY(1,1) PRIMARY KEY CLUSTERED,
        col1 varchar(20),
        col2 varchar(20)
       )

       DECLARE cur1 CURSOR FOR SELECT  TOP 2 customerid FROM orders
       DECLARE cur2 CURSOR FOR SELECT TOP 2 regiondescription FROM region
       OPEN cur1
       OPEN cur2
       FETCH cur2 INTO @col2c
       FETCH cur1 INTO @col1c
       WHILE @@FETCH_STATUS = 0
        BEGIN
         INSERT INTO #tmptbl (col1, col2) VALUES (@col1c, @col2c)
         FETCH NEXT FROM cur1 INTO @col1c
         FETCH NEXT FROM cur2 INTO @col2c
        END
       CLOSE cur1
       CLOSE cur2
       DEALLOCATE cur1
       DEALLOCATE cur2
       SELECT * FROM #tmptbl
       DROP TABLE #tmptbl
      GO

      说明:

      @@FETCH_STATUS,返回被fetch语句执行的最后游标状态。

      返回值:0-FETCH语句执行成功
          1-FETCH语句失败,或此行不再结果集中。
          2-被提取的行不存在。


    本文来自: 站长(http://www.qqcf.com) 详细出处参考:http://study.qqcf.com/web/305/47823.htmMSSQL

  • 相关阅读:
    C/C++通过WMI和系统API函数获取获取系统硬件配置信息
    C++ 获取mac地址
    解决Win7下UAC开启时无法响应WM_DROPFILES消息
    C++vector迭代器失效的问题
    解决Duilib创建的win32窗口拖到屏幕上边缘自动最大化
    VC++获取计算机Hardware Information (CPU ID, MainBoard Info, Hard Disk Serial, System Information)
    VC++实现在系统托盘来新消息闪烁,鼠标悬停显示窗口
    正则表达式的懒惰匹配?
    thinkphp-许愿墙-3
    thinkphp-许愿墙-2
  • 原文地址:https://www.cnblogs.com/daytoday/p/1651537.html
Copyright © 2020-2023  润新知