SQL SERVER 2008 游标使用示范
2011-11-09 17:38
459 查看
转载来自 MSDN
SET NOCOUNT ON
DECLARE @vendor_id int, @vendor_name nvarchar(50),
@message varchar(80), @product nvarchar(50)
PRINT '-------- Vendor Products Report --------'
DECLARE vendor_cursor CURSOR FOR
SELECT VendorID, Name
FROM Purchasing.Vendor
WHERE PreferredVendorStatus = 1
ORDER BY VendorID
OPEN vendor_cursor
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' '
SELECT @message = '----- Products From Vendor: ' +
@vendor_name
PRINT @message
-- Declare an inner cursor based
-- on vendor_id from the outer cursor.
DECLARE product_cursor CURSOR FOR
SELECT v.Name
FROM Purchasing.ProductVendor pv, Production.Product v
WHERE pv.ProductID = v.ProductID AND
pv.VendorID = @vendor_id -- Variable value from the outer cursor
OPEN product_cursor
FETCH NEXT FROM product_cursor INTO @product
IF @@FETCH_STATUS <> 0
PRINT ' <<None>>'
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @message = ' ' + @product
PRINT @message
FETCH NEXT FROM product_cursor INTO @product
END
CLOSE product_cursor
DEALLOCATE product_cursor
-- Get the next vendor.
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
END
CLOSE vendor_cursor
DEALLOCATE vendor_cursor
=====================================================================================================
-- 来个做过注释的
-----------------------------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE sfmis
GO
-- ================================================
IF EXISTS
(
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_SCHEMA = N'dbo' AND SPECIFIC_NAME = N'TotalTheProject'
)
DROP PROCEDURE [TotalTheProject]
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE TotalTheProject
-- Add the parameters for the stored procedure here
@id_projects bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- 注意红色部分
-- 创建编号
declare @id_project_task bigint
-- 创建游标
DECLARE product_task_list CURSOR
local for
select id_project_task from dbo.project_task where id_projects = @id_projects ORDER BY id_projects
-- 打开游标
OPEN product_task_list
-- 遍历游标开始
FETCH NEXT FROM product_task_list INTO @id_project_task WHILE @@FETCH_STATUS = 0
BEGIN
-- 测试游标
select @id_project_task
-- 下一个
FETCH NEXT FROM product_task_list INTO @id_project_task
END
-- 关闭游标
CLOSE product_task_list
-- 释放游标
DEALLOCATE product_task_list
END
GO
SET NOCOUNT ON
DECLARE @vendor_id int, @vendor_name nvarchar(50),
@message varchar(80), @product nvarchar(50)
PRINT '-------- Vendor Products Report --------'
DECLARE vendor_cursor CURSOR FOR
SELECT VendorID, Name
FROM Purchasing.Vendor
WHERE PreferredVendorStatus = 1
ORDER BY VendorID
OPEN vendor_cursor
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT ' '
SELECT @message = '----- Products From Vendor: ' +
@vendor_name
PRINT @message
-- Declare an inner cursor based
-- on vendor_id from the outer cursor.
DECLARE product_cursor CURSOR FOR
SELECT v.Name
FROM Purchasing.ProductVendor pv, Production.Product v
WHERE pv.ProductID = v.ProductID AND
pv.VendorID = @vendor_id -- Variable value from the outer cursor
OPEN product_cursor
FETCH NEXT FROM product_cursor INTO @product
IF @@FETCH_STATUS <> 0
PRINT ' <<None>>'
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @message = ' ' + @product
PRINT @message
FETCH NEXT FROM product_cursor INTO @product
END
CLOSE product_cursor
DEALLOCATE product_cursor
-- Get the next vendor.
FETCH NEXT FROM vendor_cursor
INTO @vendor_id, @vendor_name
END
CLOSE vendor_cursor
DEALLOCATE vendor_cursor
=====================================================================================================
-- 来个做过注释的
-----------------------------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
USE sfmis
GO
-- ================================================
IF EXISTS
(
SELECT *
FROM INFORMATION_SCHEMA.ROUTINES
WHERE SPECIFIC_SCHEMA = N'dbo' AND SPECIFIC_NAME = N'TotalTheProject'
)
DROP PROCEDURE [TotalTheProject]
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE TotalTheProject
-- Add the parameters for the stored procedure here
@id_projects bigint
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- 注意红色部分
-- 创建编号
declare @id_project_task bigint
-- 创建游标
DECLARE product_task_list CURSOR
local for
select id_project_task from dbo.project_task where id_projects = @id_projects ORDER BY id_projects
-- 打开游标
OPEN product_task_list
-- 遍历游标开始
FETCH NEXT FROM product_task_list INTO @id_project_task WHILE @@FETCH_STATUS = 0
BEGIN
-- 测试游标
select @id_project_task
-- 下一个
FETCH NEXT FROM product_task_list INTO @id_project_task
END
-- 关闭游标
CLOSE product_task_list
-- 释放游标
DEALLOCATE product_task_list
END
GO
相关文章推荐
- SQL Server 2008 游标使用实例
- SQL Server 2008 游标使用实例
- Sql Server 2008游标使用
- SQL Server 2008 游标使用实例
- SQL Server游标的使用
- SQL SERVER游标的使用
- 使用证书创建SQL Server 2008镜像
- 使用Oracle Sql Developer将SQL SERVER 2008数据库移植到Oracle 11g(四)
- sql server 2008 R2 express使用命令行模式设置混合登模式
- SQL Server 2008空间数据应用系列十:使用存储过程生成GeoRSS聚合空间信息
- SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑
- 3月13日工作笔记(补)——sql server 2008全文索引使用(part 1)
- sql server 2000使用游标和随机查询的脚本示例
- sql server 2008安装及使用过程中的一些问题
- sql server 2005/2008 设置 sql身份验证 和 sa空密码(像sql2000一样使用)
- Visual C# 2008+SQL Server 2005 数据库与网络开发--4.5.2 使用SQL创建视图
- SQL Server游标的使用
- SQL Server 游标使用方法
- SQL Server 2008 R2如何使用正则表达式搜索
- SQL Server 中游标的使用