SQL洢̷
------------------------
1 SQL洢̷ļĿ
2 δSQL洢
3 εSQL洢

1 SQL洢̷ļĿ
---------------------------------------
1.1  inputparam.sp
    ÷ҪʾSQL洢ֵֵ֧͡䡢ʽԼ
    ݿúʹá
    SQL洢̵Ҫǽո͵д
    Ȼsqlsp_alltype
    Ϣοinputparam.sp
    
1.2  outputparam.sp
    ÷ҪʾSQL洢ֵ֧͡
    SQL洢̵ҪǴӱsqlsp_alltypeץȡһݣͨ
    ظߡ
    Ϣοoutputparam.sp

1.3  resultset.sp
    ÷ҪʾSQL洢ηһ
    SQL洢̵ҪǴӱSQLSP_ALLTYPEץȡǰnTOPУԽʽ
    ظߡ
    Ϣοresultset.sp
    
1.4  loopif.sp
    ÷ҪʾIF䡢LOOPԼCONTINUE HANDLERӦá
    SQL洢̵ҪǸĿγ̱ţcidӳɼsqlsp_grade
    ץȡÿγ̵гɼֱͳABCȼ
    Ϣοloopif.sp
    
1.5  whilecase.sp
    ÷ҪʾWHILECASEӦá
    SQL洢̵ҪǸĿγ̱ţcidӳɼsqlsp_grade
    ץȡÿγ̵гɼֱͳABCȼ
    Ϣοwhilecase.sp

1.6  forcase.sp
    ÷ҪʾFORCASEӦá
    SQL洢̵ҪǸĿγ̱ţcidӳɼsqlsp_grade
    ץȡÿγ̵гɼֱͳABCȼ
    Ϣοforcase.sp

1.7  dynamic1.sp
    ÷Ҫʾ̬SQL䣬EXECUTE IMMEDIATE䡢PREPARE䡢EXECUTE
    DEALLOCATE PREPAREӦáEXECUTEֿɷΪ
    ֵֵֵΡ
    SQL洢̵Ҫɾsqlsp_t1еУȻö̬SQL
    sqpsp_t1вУ󷵻ز
    Ϣοdynamic1.sp

1.8  dynamic2.sp
    ÷Ҫʾ̬α꣬ʹö̬α괦ݺͷؽ
    SQL洢̵ҪǷֱsqlsp_t1C1ƽֵܺͣ󷵻
    sqpsp_t1
    Ϣοdynamic2.sp

1.9  dynamic3.sp
    ÷Ƕ̬SQLһӦá
    SQL洢̵ҪǸıģʽע˴ָschemaģʽ
    ע˴ָpatternɾƥб
    Ϣοdynamic3.sp

1.10  nest1.sp, nest2.ec, nest3.sp
    ҪʾSQL洢̺ESQL/C洢Ƕ׵áSQLSP_NEST3
    ESQLSP_NEST2ESQLSP_NEST2SQLSP_NEST1
    洢̵ĹͬǸѧţsidӦѧ
    sname
    Ϣοnest1.sp, nest2.ec, nest3.sp

1.11  updateonduty.sp, doorcardtrigger.sql
    ÷ҪʾڴеSQL洢̡
    updateonduty.spеĴ洢±sqlsp_DoorCardOnDuty
    doorcardtrigger.sql򴴽sqlsp_DoorCardϵĴ
    Ϣοupdateonduty.sp, doorcardtrigger.sql

1.12  callsqlsp.cs
    ÷ҪʾC#еSQL洢̡
    Ϣοcallsqlsp.cs
    
1.13  CallSqlSp.java
    ÷ҪʾJAVAеSQL洢̡
    ϢοCallSqlSp.java
    
1.14  createtable.sql
    SQLűΪSQL洢׼ݡ

2 δSQL洢
---------------------------------------
2.1 SQL洢̵Ļ
    (1) ı༭дSQL洢̣ͨΪչΪ.spļ
    (2) SQL洢ǰҪdmcnofig.iniصĹؼ֡
        DB_FODIR: ϵͳļ·洢Դļ洢·¡
        DB_SPDIR: 洢ʱмļԼɵĿļڴˡ
        DB_SPLOG: ʱĴϢļTRACEӡ־ļڴˡ
    (3) dmsqlͻ˹߻ݿߴ洢̡

2.2 dmsqlͻ˹ߴSQL洢ʾ
    潫loopif.spΪϸdmSQLͻ˹ߴSQL洢̡
    loopif.spһΪSQLSP_LOOPIFĴ洢̡SQLSP_LOOPIFĸϢ
    οloopif.spļ
    
    (1) Windowsƽ̨
        a) 'DBMaker 5.4''DBMaker 'ѡݿ'DBSAMPLE5'
           
        b) 'DBMaker 5.4''dmSQLͻ'
        c) dmSQLͻִSQLSQL洢̣
             dmSQL> connect to "DBSAMPLE5" "SYSADM" "";
             dmSQL> run 'C:\DBMaker\5.4\samples\SQLSP\createtable.sql';
             dmSQL> create procedure from 'C:\DBMaker\5.4\samples\SQLSP\loopif.sp';
           ڣһΪSQLSP_LOOPIFSQL洢Ѿɹ
        d) dmSQLͻִSQLSQL洢̣
             dmSQL> CALL SQLSP_LOOPIF(1002,?,?,?);
           
    (2) LINUXƽ̨
        a) ն'DBSAMPLE5'ݿ⣺
             /APP_HOME/bin/dmserver DBSAMPLE5 &
        b) ն'dmSQLͻ'
             /APP_HOME/bin/dmsqlc
        c) dmSQLͻִSQLSQL洢̣
             dmSQL> connect to "DBSAMPLE5" "SYSADM" "";
             dmSQL> run '/APP_HOME/samples/SQLSP/createtable.sql';
             dmSQL> create procedure from '/APP_HOME/samples/SQLSP/loopif.sp';
           ڣһΪSQLSP_LOOPIFSQL洢Ѿɹ
        d) dmSQLͻִSQLSQL洢̣
             dmSQL> CALL SQLSP_LOOPIF(1002,?,?,?);

2.3 ݿߴSQL洢ʾ
    潫loopif.spΪϸݿߴSQL洢̡
    loopif.spһΪSQLSP_LOOPIFĴ洢̡
    SQLSP_LOOPIFĸϢοloopif.spļ
    ע⣺SQL洢лõһЩǰЩáοcreatetable.sql

    (1) Windowsƽ̨
        a) 'DBMaker 5.4''DBMaker'ѡݿ'DBSAMPLE5'
           
        b) 'DBMaker 5.4''ݿ'ӵ'DBSAMPLE5'
        c) ݿߴSQL洢̣
           ߵ״ͼѡ ݿ/洢̣ұߵ[]ť򿪴
           洢򵼡
           ѡ ͣSQL[]ťC:\DBMaker\5.4\
           samples\SQLSP\loopif.sp[]ťɴ̡
           ڣһΪSQLSP_LOOPIFSQL洢Ѿɹ
        d) ݿвSQL洢̣
           ѡմõSQL洢̣SQLSP_LOOPIF, [ִ]ťӦ
           1002[ȷ]ťɡ
           
    (2) Linuxƽ̨
        a) ն'DBSAMPLE5'ݿ⣺
           /APP_HOME/bin/dmserver DBSAMPLE5 &
        b) ն'ݿ'ӵ'DBSAMPLE5'
           /APP_HOME/bin/jdba
        c) ݿߴSQL洢̣
           ߵ״ͼѡ ݿ/洢̣ұߵ[]ť򿪴
           洢򵼡
           ѡ ͣSQL[]ť/APP_HOME
           /samples/SQLSP/loopif.sp[]ťɴ̡
           ڣһΪSQLSP_LOOPIFSQL洢Ѵɹ
        d) ݿвSQL洢̣
           ѡմõSQL洢̣SQLSP_LOOPIF, [ִ]ťӦ
           1002[ȷ]ťɡ

  ע⣺
    nest2.ecһESQL/C洢̣SQL洢ƣdmSQLͻ˹У
    ͨcreate procedure from 'C:\DBMaker\5.4\samples\SQLSP\test2.ec'
    ҪESQL/C͵Ĵ洢̣ҪڰװDBMakerʱָC

3 εSQL洢
---------------------------------------
  SQL洢һESQL/CJAVA洢һɿͻ˹ֱӵã
  Ҳڸֱеãڸִ洢̺ʹеá
  
3.1 SQL洢̵﷨
      CALL procedure-name[parameter-list]; 
    
      EXECUTE PROCEDURE procedure-name[parameter-list]; 
    ע⣺
      ô洢ʱó󶨱Ϊʵʲ
      ֻð󶨱ʵʲԱֵ

3.2 dmsqlͻ˹ߵSQL洢ʾ
    SQLSP_NEST3SQLΪ
      dmSQL> CALL SQLSP_NEST3(1,?);
    Ҳã
      dmSQL> CALL SQLSP_NEST3(?,?);
      dmSQL> 1;
      dmSQL> 2;
      dmSQL> 3;
      dmSQL> END;
    
    ˵
      '?' ǲλ
      ڶδ洢ֱ̣ṩֵ123 
      ʹòλdmsqlԶ㹻Ļմ洢
      ֵ

3.3 C#еSQL洢ʾ
    ο callsqlsp.cs

3.4 JAVAеSQL洢ʾ
    ο CallSqlSp.java

3.5 洢еSQL洢ʾ
    ο nest1.sp, nest2.ec, nest3.sp

3.6 еSQL洢ʾ
    ο updateonduty.sp, doorcardtrigger.sql
    ע⣺еõĴ洢̲зֵ
