<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>立天下 &#187; 游标</title>
	<atom:link href="http://kuihuadi.com/libra/tag/%e6%b8%b8%e6%a0%87/feed/" rel="self" type="application/rss+xml" />
	<link>http://kuihuadi.com/libra</link>
	<description>Just another 葵花地。 site</description>
	<lastBuildDate>Tue, 04 Aug 2009 12:52:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>游标的使用(嵌套的游标)</title>
		<link>http://kuihuadi.com/libra/2009/08/04/%e6%b8%b8%e6%a0%87%e7%9a%84%e4%bd%bf%e7%94%a8%e5%b5%8c%e5%a5%97%e7%9a%84%e6%b8%b8%e6%a0%87/</link>
		<comments>http://kuihuadi.com/libra/2009/08/04/%e6%b8%b8%e6%a0%87%e7%9a%84%e4%bd%bf%e7%94%a8%e5%b5%8c%e5%a5%97%e7%9a%84%e6%b8%b8%e6%a0%87/#comments</comments>
		<pubDate>Tue, 04 Aug 2009 12:52:36 +0000</pubDate>
		<dc:creator>libra</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[游标]]></category>

		<guid isPermaLink="false">http://kuihuadi.com/libra/?p=7</guid>
		<description><![CDATA[declare @name varchar(20)
declare @id int
        DECLARE author_Cursor CURSOR FOR
  SELECT ID, Name
  FROM Authors
  OPEN author_Cursor
  FETCH NEXT FROM author_Cursor into @id,@name
  WHILE @@FETCH_STATUS = 0
   BEGIN
                    declare @bid int
                    declare @title varchar(50)
                    declare @str varchar(1000)
                    set @str=''
     DECLARE book_Cursor CURSOR FOR
     SELECT ID, Title
     FROM Books
     WHERE  Author = @id
     OPEN book_Cursor
     FETCH NEXT FROM book_Cursor into @bid,@title
     WHILE @@FETCH_STATUS = 0
      BEGIN
      set @str = @str + ' 《' + @title+ '》'
      FETCH NEXT FROM book_Cursor into @bid,@title
      END
     CLOSE book_Cursor
     DEALLOCATE book_Cursor
         insert into newtable values (@id,@name,@str)
         FETCH NEXT FROM author_Cursor into @id,@name
         END
      CLOSE author_Cursor
      DEALLOCATE author_Cursor <a href="http://kuihuadi.com/libra/2009/08/04/%e6%b8%b8%e6%a0%87%e7%9a%84%e4%bd%bf%e7%94%a8%e5%b5%8c%e5%a5%97%e7%9a%84%e6%b8%b8%e6%a0%87/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>print &#8216;=============================================<br />
初始化数据库：<br />
=============================================&#8217;</p>
<p>USE master<br />
GO<br />
IF EXISTS(SELECT * FROM sysdatabases WHERE name=&#8217;aDB&#8217;)<br />
DROP DATABASE aDB<br />
GO<br />
EXEC XP_cmdshell &#8216;mkdir D:\project&#8217;,no_output<br />
CREATE DATABASE aDB<br />
ON<br />
(<br />
  NAME=&#8217;aDB_data&#8217;,<br />
  FILENAME=&#8217;D:\project\aDB_data.mdf&#8217;,<br />
  SIZE =10 MB,<br />
  FILEGROWTH=20%</p>
<p>)<br />
LOG ON<br />
(<br />
  NAME=&#8217;aDB_log&#8217;,<br />
  FILENAME=&#8217;d:\project\aDB_log.ldf&#8217;,<br />
  SIZE =20 MB,<br />
  FILEGROWTH=10%<br />
)<br />
GO</p>
<p>print &#8216;=============================================<br />
开始：<br />
=============================================&#8217;</p>
<p>USE aDB<br />
GO<br />
SET NOCOUNT ON</p>
<p>IF EXISTS(SELECT * FROM sysobjects WHERE name=&#8217;Books&#8217;)<br />
DROP table Books<br />
GO<br />
create table Books<br />
(<br />
    ID int,  &#8211;书籍编号<br />
 Author int, &#8211;作者编号<br />
 Title varchar(100) &#8211;书名<br />
)<br />
GO<br />
IF EXISTS(SELECT * FROM sysobjects WHERE name=&#8217;Authors&#8217;)<br />
DROP table Authors<br />
GO<br />
Create table Authors<br />
(<br />
 ID int,  &#8211;作者编号<br />
 Name varchar(20) &#8211;姓名<br />
)<br />
declare @n int,@m int<br />
select @n=1,@m=1<br />
while (@n&lt;=5)<br />
begin<br />
insert into Authors values(@n,substring(replace(newid(),&#8217;-',&#8221;),1,5))<br />
set @n=@n+1<br />
end<br />
while (@m&lt;=10)<br />
begin<br />
insert into Books values(@m,cast(rand()*5 as int)+1,substring(replace(newid(),&#8217;-',&#8221;),1,10)) &#8211;一个作者可以有多本书<br />
set @m=@m+1<br />
end</p>
<p>if exists (select * from sysobjects where name = &#8216;newtable&#8217;)<br />
drop table newtable<br />
GO<br />
create table newtable<br />
(<br />
    ID int,  &#8211;作者编号<br />
 Name varchar(20), &#8211;姓名<br />
    Title varchar(1000) &#8211;拥有的书名</p>
<p>)<br />
declare @name varchar(20)<br />
declare @id int<br />
        DECLARE author_Cursor CURSOR FOR<br />
  SELECT ID, Name<br />
  FROM Authors<br />
  OPEN author_Cursor<br />
  FETCH NEXT FROM author_Cursor into @id,@name<br />
  WHILE @@FETCH_STATUS = 0<br />
   BEGIN     <br />
                    declare @bid int<br />
                    declare @title varchar(50)<br />
                    declare @str varchar(1000)<br />
                    set @str=&#8221;<br />
     DECLARE book_Cursor CURSOR FOR<br />
     SELECT ID, Title<br />
     FROM Books<br />
     WHERE  Author = @id<br />
     OPEN book_Cursor<br />
     FETCH NEXT FROM book_Cursor into @bid,@title<br />
     WHILE @@FETCH_STATUS = 0<br />
      BEGIN<br />
      set @str = @str + &#8216; 《&#8217; + @title+ &#8216;》&#8217;<br />
      FETCH NEXT FROM book_Cursor into @bid,@title <br />
      END<br />
     CLOSE book_Cursor<br />
     DEALLOCATE book_Cursor<br />
         insert into newtable values (@id,@name,@str)<br />
         FETCH NEXT FROM author_Cursor into @id,@name<br />
         END<br />
      CLOSE author_Cursor<br />
      DEALLOCATE author_Cursor<br />
print &#8216;=============================================<br />
全部作者信息：<br />
=============================================&#8217;<br />
select 作者编号=ID,作者姓名=Name,写过的书籍=Title from newtable<br />
GO</p>
<p>print &#8216;=============================================<br />
写过2本书以上的作者信息：<br />
=============================================&#8217;</p>
<p>select 作者编号=ID,作者姓名=Name,写过的书籍=Title from newtable N<br />
where<br />
(select count(*) from Books B where B.Author=N.ID)&gt;=2</p>
<p>print &#8216;=============================================<br />
作者表：<br />
=============================================&#8217;<br />
select * from Authors<br />
print &#8216;=============================================<br />
书表：<br />
=============================================&#8217;</p>
]]></content:encoded>
			<wfw:commentRss>http://kuihuadi.com/libra/2009/08/04/%e6%b8%b8%e6%a0%87%e7%9a%84%e4%bd%bf%e7%94%a8%e5%b5%8c%e5%a5%97%e7%9a%84%e6%b8%b8%e6%a0%87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
