青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

廈門大學(xué)的一個(gè)課件  備查
http://www.cs.xmu.edu.cn/education/fine_courses/database/%BE%AB%C6%B7%BF%CE%B3%CC%BD%A8%C9%E8%C4%DA%C8%DD/3_%CD%F8%C2%E7%B0%E6cai/content/index.htm


           

3. 不用游標(biāo)的嵌入式SQL語(yǔ)句應(yīng)用技術(shù)

             
 

     所謂不用游標(biāo)的SQL語(yǔ)句,是指一般不需要返回結(jié)果數(shù)據(jù),也不需要使用主變量的語(yǔ)句。它們是嵌入式SQL中最簡(jiǎn)單的一類語(yǔ)句。有以下幾種:
       · 說(shuō)明性語(yǔ)句
       · 數(shù)據(jù)定義語(yǔ)句
       · 數(shù)據(jù)控制語(yǔ)句
       · 查詢結(jié)果為單記錄的SELECT語(yǔ)句
       · 非CURRENT形式的UPDATE語(yǔ)句
       · 非CURRENT形式的DELETE語(yǔ)句
       · INSERT語(yǔ)句
    其中:

    *) 所有的說(shuō)明性語(yǔ)句、數(shù)據(jù)定義與控制語(yǔ)句都不需要使用游標(biāo),在主語(yǔ)言中嵌入說(shuō)明性語(yǔ)句、數(shù)據(jù)定義與控制語(yǔ)句,只要給語(yǔ)句加上前綴EXEC SQL和語(yǔ)句結(jié)束符即可。

    *) INSERT語(yǔ)句也不需要使用游標(biāo),但通常需要使用主變量。

    *) SELECT語(yǔ)句、UPDATE語(yǔ)句、DELETE語(yǔ)句則更復(fù)雜些。

   以下分別討論常見的幾種使用方法:
 

 一、說(shuō)明性語(yǔ)句
 

    

   交互式SQL中沒(méi)有說(shuō)明性語(yǔ)句,這里的說(shuō)明性語(yǔ)句是專為在嵌入式SQL中說(shuō)明主變量等而設(shè)置的,一對(duì)由兩條語(yǔ)句組成:
       EXEC SQL BEGIN DECLARE SECTION;
          <變量定義語(yǔ)句>
       EXEC SQL END DECLARE SECTION;

    兩條語(yǔ)句必須配對(duì)出現(xiàn),相當(dāng)于一個(gè)括號(hào),兩條語(yǔ)句中間是主變量、指示變量的說(shuō)明。
 

 
二、數(shù)據(jù)定義語(yǔ)句
 

  

例1 建立一個(gè)“學(xué)生”表Student
    EXEC SQL CREATE TABLE Student
    (Sno CHAR(5) NOT NULL UNIQUE,
    Sname CHAR(20),
    Ssex CHAR(1),
    Sage INT,
    Sdept CHAR(15));


數(shù)據(jù)定義語(yǔ)句中不允許使用主變量。例如下列語(yǔ)句是錯(cuò)誤的:
    EXEC SQL DROP TABLE :table_name;
 

 
三、數(shù)據(jù)控制語(yǔ)句
 

  

例2 把查詢Student表權(quán)限授給用戶U1
    EXEC SQL GRANT SELECT ON TABLE Student TO U1;
 

 
四、查詢結(jié)果為單記錄的SELECT語(yǔ)句
 

   

  在嵌入式SQL中,查詢結(jié)果為單記錄的SELECT語(yǔ)句需要用INTO子句指定查詢結(jié)果的存放地點(diǎn)。該語(yǔ)句的一般格式為:


EXEC SQL SELECT [ALL|DISTINCT] <目標(biāo)列表達(dá)式>[,<目標(biāo)列表達(dá)式>]...
    INTO <主變量>[<指示變量>][,<主變量>[<指示變量>]]...
    FROM <表名或視圖名>[,<表名或視圖名>] ...
    [WHERE <條件表達(dá)式>]
    [GROUP BY <列名1> [HAVING <條件表達(dá)式>]]
    [ORDER BY <列名2> [ASC|DESC]];

說(shuō)明:

   該語(yǔ)句對(duì)交互式SELECT語(yǔ)句的擴(kuò)充就是多了一個(gè)INTO子句,把從數(shù)據(jù)庫(kù)中找到的符合條件的記錄,放到INTO子句指出的主變量中去。其他子句的含義不變。使用該語(yǔ)句需要注意以下幾點(diǎn):
   *) INTO子句、WHERE子句的條件表達(dá)式、HAVING短語(yǔ)的的條件表達(dá)式中均可以使用主變量,但這些主變量必須事先加以說(shuō)明,并且引用時(shí)前面要加上冒號(hào)。
   *) 查詢返回的記錄中,可能某些列值為空值NULL,則如下處理:如果INTO子句中主變量后面跟有指示變量,則當(dāng)查詢得出的某個(gè)數(shù)據(jù)項(xiàng)為空值時(shí),系統(tǒng)會(huì)自動(dòng)將相應(yīng)主變量后面的指示變量置為負(fù)值,但不向該主變量執(zhí)行賦值操作,即主變量值仍保持執(zhí)行SQL語(yǔ)句之前的值。所以當(dāng)發(fā)現(xiàn)指示變量值為負(fù)值時(shí),不管主變量為何值,均應(yīng)認(rèn)為主變量值為NULL。指示變量只能用于INTO子句中,并且也必須事先加以說(shuō)明,引用時(shí)前面要加上冒號(hào)。
   *) 如果數(shù)據(jù)庫(kù)中沒(méi)有滿足條件的記錄,即查詢結(jié)果為空,則DBMS將SQLCODE的值置為100。
   *) 如果查詢結(jié)果實(shí)際上并不是單條記錄,而是多條記錄,則程序出錯(cuò),DBMS會(huì)在SQLCA中返回錯(cuò)誤信息。

例3 根據(jù)學(xué)生號(hào)碼查詢學(xué)生信息。假設(shè)已將要查詢的學(xué)生的學(xué)號(hào)賦給了主變量givensno


EXEC SQL SELECT Sno, Sname, Ssex, Sage, Sdept
    INTO :Hsno, :Hname, :Hsex, :Hage, :Hdept
    FROM Student
    WHERE Sno=:givensno;


上面的SELECT語(yǔ)句中Hsno, Hname, Hsex, Hage, Hdept和givensno均是主變量,并均已在前面的程序中說(shuō)明過(guò)了。

例4 查詢某個(gè)學(xué)生選修某門課程的成績(jī)。假設(shè)已將要查詢的學(xué)生的學(xué)號(hào)賦給了主變量givensno,將課程號(hào)賦給了主變量givencno


EXEC SQL SELECT Sno, Cno, Grade
    INTO :Hsno, :Hcno, :Hgrade:Gradeid
    FROM SC
    WHERE Sno=:givensno AND Cno=:givencno;

由于學(xué)生選修一門課后有可能沒(méi)有參加考試,也就是說(shuō)其成績(jī)?yōu)榭罩担晕覀冊(cè)谠摾齀NTO子句中加了指示變量Gradeid,用于指示主變量Hgrade是否為空值。指示變量也需要和所有主變量一起在前面程序中事先說(shuō)明。執(zhí)行此語(yǔ)句后,如果Gradeid小于0,則不論Hgrade為何值,均認(rèn)為該學(xué)生成績(jī)?yōu)榭罩怠?/p>


雖然對(duì)于僅返回一行結(jié)果數(shù)據(jù)的SELECT語(yǔ)句可以不使用游標(biāo),但從應(yīng)用程序獨(dú)立性角度考慮,最好還是使用游標(biāo)。因?yàn)槿绻院髷?shù)據(jù)庫(kù)改變了,該SELECT語(yǔ)句可能會(huì)返回多行數(shù)據(jù),這時(shí)不使用游標(biāo)就會(huì)出錯(cuò)。
 

 
五、非CURRENT形式的UPDATE語(yǔ)句
 

 非CURRENT形式是指特殊情況下的應(yīng)用。在這種情況下的嵌入式UPDATE語(yǔ)句中,SET子句和WHERE子句都可以使用主變量,其中SET子句中還可以使用指示變量。以下分別用幾個(gè)例子說(shuō)明它們的應(yīng)用技術(shù):


例5 將全體學(xué)生1號(hào)課程的考試成績(jī)?cè)黾尤舾煞帧<僭O(shè)增加的分?jǐn)?shù)已賦給主變量Raise
EXEC SQL UPDATE SC
    SET Grade=Grade+:Raise
    WHERE Cno='1';

該操作實(shí)際上是一個(gè)集合操作,DBMS會(huì)修改所有學(xué)生的1號(hào)課程的Grade屬性列。

例6 修改某個(gè)學(xué)生1號(hào)課程的成績(jī)。假設(shè)該學(xué)生的學(xué)號(hào)已賦給主變量givensno,修改后的成績(jī)已賦給主變量newgrade
EXEC SQL UPDATE SC
    SET Grade=:newgrade
    WHERE Sno=:givensno;

例7 將計(jì)算機(jī)系全體學(xué)生年齡置NULL值
Sageid=-1;
    EXEC SQL UPDATE Student
    SET Sage=:Raise:Sageid
    WHERE Sdept='CS';

將指示變量Sageid賦一個(gè)負(fù)值后,無(wú)論主變量Raise為何值,DBMS都會(huì)將CS系所有記錄的年齡屬性置空值。它等價(jià)于:
EXEC SQL UPDATE Student
    SET Sage=NULL
    WHERE Sdept='CS';
 

 
六、非CURRENT形式的DELETE語(yǔ)句
 

    

    與上同理,DELETE語(yǔ)句的WHERE子句中可以使用主變量指定刪除條件。


例8 某個(gè)學(xué)生退學(xué)了,現(xiàn)要將有關(guān)他的所有選課記錄刪除掉。假設(shè)該學(xué)生的姓名已賦給主變量stdname
EXEC SQL DELETE
    FROM SC
    WHERE Sno=
        (SELECT Sno
         FROM Student
         WHERE Sname=:stdname);


另一種等價(jià)實(shí)現(xiàn)方法為:


EXEC SQL DELETE
    FROM SC
    WHERE :stdname=
        (SELECT Sname
         FROM Student
         WHERE Studnet.Sno=SC.sno);

顯然第一種方法更直接,從而也更高效些。
如果該學(xué)生選修了多門課程,執(zhí)行上面的語(yǔ)句時(shí),DBMS會(huì)自動(dòng)執(zhí)行集合操作,即把他選修的所有課程都刪除掉。
 

 
七、INSERT語(yǔ)句
 

 
    INSERT語(yǔ)句的VALUES子句中可以使用主變量和指示變量。


例9 某個(gè)學(xué)生新選修了某門課程,將有關(guān)記錄插入SC表中。假設(shè)學(xué)生的學(xué)號(hào)已賦給主變量stdno,課程號(hào)已賦給主變量couno。


gradeid=-1;
EXEC SQL INSERT
    INTO SC(Sno, Cno, Grade)
    VALUES(:stdno, :couno, :gr:gradeid);


由于該學(xué)生剛選修課程,尚未考試,因此成績(jī)列為空。所以本例中用指示變量指示相應(yīng)的主變量為空值。
 

 

廈門大學(xué)計(jì)算機(jī)科學(xué)系  薛永生

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美国产视频日韩| 亚洲欧美乱综合| 国产精品久久久久毛片软件 | 99精品免费网| 亚洲三级国产| 亚洲一级特黄| 久久手机免费观看| 欧美福利在线观看| 夜夜嗨av一区二区三区中文字幕 | 老司机午夜精品| 欧美成人国产va精品日本一级| 欧美日韩精选| 国产亚洲欧美一区在线观看| 在线成人免费观看| 亚洲视频在线观看免费| 久久国产精品99国产精| 欧美激情精品久久久六区热门| 夜夜嗨av一区二区三区免费区| 久久精品国产免费观看| 欧美日韩一区二区三区在线观看免| 国产亚洲成精品久久| 99热免费精品在线观看| 久久精品视频va| aa日韩免费精品视频一| 久久久久久9| 国产精品久久一卡二卡| 亚洲福利一区| 久久国产精品久久精品国产| 欧美激情一区二区三区不卡| 亚洲欧美国产va在线影院| 免费看的黄色欧美网站| 国产日韩精品电影| 亚洲一区二区三区免费视频| 欧美国产乱视频| 性欧美1819sex性高清| 欧美日韩视频| 亚洲精品网站在线播放gif| 久久久久久9| 亚洲一区二区精品视频| 欧美区在线播放| 亚洲电影激情视频网站| 久久久久成人精品| 亚洲一区激情| 国产精品高潮呻吟久久| 日韩视频亚洲视频| 欧美福利视频一区| 久久久久久香蕉网| 国外成人网址| 久久久久久尹人网香蕉| 亚洲一区中文字幕在线观看| 欧美色精品在线视频| 亚洲精品视频在线| 欧美黄色片免费观看| 狼人天天伊人久久| 尤物精品在线| 欧美黄色精品| 欧美成人精品一区二区三区| 亚洲国产欧美一区二区三区久久| 久久综合狠狠综合久久综青草 | 欧美精品久久一区| 亚洲乱码国产乱码精品精天堂| 欧美激情精品久久久| 毛片一区二区三区| 欧美在线观看日本一区| 国内精品久久久久久久影视蜜臀 | 亚洲伊人一本大道中文字幕| 亚洲精品一级| 国产精品毛片va一区二区三区| 亚洲欧美国产高清| 性欧美1819sex性高清| 狠狠噜噜久久| 亚洲国产日韩欧美在线动漫| 免费欧美日韩| 一区二区三区久久网| 亚洲香蕉伊综合在人在线视看| 国产精品任我爽爆在线播放 | 一本色道久久综合亚洲精品不卡| 欧美日韩视频在线观看一区二区三区| 中文在线不卡| 欧美一区亚洲| 亚洲美女一区| 亚洲欧美国产视频| …久久精品99久久香蕉国产| 日韩一级黄色av| 国产一区二区精品丝袜| 欧美福利专区| 国产精品草莓在线免费观看| 久久裸体艺术| 欧美日韩中文在线| 久久综合伊人| 欧美日韩综合一区| 美女脱光内衣内裤视频久久影院| 欧美另类99xxxxx| 久久久亚洲国产美女国产盗摄| 欧美激情国产日韩精品一区18| 欧美一区二区福利在线| 蜜桃av噜噜一区| 欧美一区二区三区精品| 麻豆亚洲精品| 欧美一级网站| 欧美精品亚洲| 免费视频最近日韩| 国产精品综合久久久| 欧美激情在线播放| 国产一区二区丝袜高跟鞋图片| 日韩亚洲视频在线| 亚洲国产日日夜夜| 久久激情五月激情| 欧美亚洲视频| 欧美午夜在线| 91久久精品国产| 精品成人a区在线观看| 亚洲伊人久久综合| 亚洲小视频在线| 欧美大尺度在线观看| 欧美成人精品在线| 韩国欧美国产1区| 欧美伊人久久| 欧美一区二区视频在线观看| 欧美日韩国产在线播放网站| 欧美大片在线影院| 在线观看日韩av电影| 久久av二区| 久久久精品tv| 国产亚洲成精品久久| 欧美亚洲自偷自偷| 久久精品国产精品亚洲| 国产九区一区在线| 亚洲一区中文| 久久精品91久久久久久再现| 国产人妖伪娘一区91| 欧美一级黄色网| 久久久午夜视频| 激情一区二区三区| 久久亚洲春色中文字幕| 牛夜精品久久久久久久99黑人| 伊伊综合在线| 美女视频网站黄色亚洲| 亚洲国产免费| 中国成人黄色视屏| 国产精品美女www爽爽爽| 亚洲免费小视频| 久久久一区二区三区| 亚洲高清视频在线| 欧美精品国产精品日韩精品| aⅴ色国产欧美| 欧美影院精品一区| 黄色工厂这里只有精品| 久久综合五月| 亚洲久久在线| 午夜激情综合网| 国产一区二区三区在线免费观看| 久久全球大尺度高清视频| 亚洲国产一区二区三区在线播| 一区二区三区欧美在线观看| 国产精品自拍视频| 久久综合亚洲社区| 99精品国产高清一区二区| 欧美一区二区三区喷汁尤物| 在线观看日韩| 欧美特黄一级| 久久久久久网站| 日韩午夜免费| 久久综合99re88久久爱| 99热精品在线观看| 国产性做久久久久久| 欧美激情亚洲| 久久精品视频在线看| 亚洲毛片在线观看| 久久精品亚洲精品国产欧美kt∨| 亚洲国产一区视频| 国产精品欧美日韩一区| 久久中文字幕一区二区三区| 亚洲视频第一页| 欧美激情1区| 久久精品日产第一区二区| 99在线精品观看| 伊伊综合在线| 国产精品午夜电影| 欧美久久婷婷综合色| 久久精品综合一区| 亚洲视屏一区| 亚洲欧洲在线一区| 久久综合色8888| 欧美一区二区三区免费视| 日韩亚洲欧美中文三级| 伊人久久亚洲影院| 国产亚洲aⅴaaaaaa毛片| 欧美日韩一区二区三区高清| 老司机一区二区三区| 久久成人在线| 亚洲综合成人在线| 99riav国产精品| 亚洲国产综合在线| 鲁鲁狠狠狠7777一区二区| 久久av红桃一区二区小说| 亚洲午夜电影网| 一区二区欧美亚洲| 亚洲免费观看高清在线观看| 在线看视频不卡|