1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      oracle中關(guān)于替代變量,accpt,綁定變量,字符變量
      此文檔介紹兩個(gè)事情,一個(gè)是替代變量,另一個(gè)就是了解一下硬解析和軟解析對(duì)于變量來(lái)說(shuō)declare定義的好還是variable定義的好
      在oracle 中,對(duì)于一個(gè)提交的sql語(yǔ)句,存在兩種可選的解析過(guò)程, 一種叫做硬解析,一種叫做軟解析.一個(gè)硬解析需要經(jīng)解析,制定執(zhí)行路徑,優(yōu)化訪問(wèn)計(jì)劃等許多的步驟.硬解釋不僅僅耗費(fèi)大量的cpu,更重要的是會(huì)占據(jù)重要的們閂(latch)資源,嚴(yán)重的影響系統(tǒng)的規(guī)模的擴(kuò)大(即限制了系統(tǒng)的并發(fā)行),而且引起的問(wèn)題不能通過(guò)增加內(nèi)存條和cpu的數(shù)量來(lái)解決。之所以這樣是因?yàn)殚T閂是為了順序訪問(wèn)以及修改一些內(nèi)存區(qū)域而設(shè)置的,這些內(nèi)存區(qū)域是不能被同時(shí)修改。當(dāng)一個(gè)sql語(yǔ)句提交后,oracle會(huì)首先檢查一下共享緩沖池(shared pool)里有沒(méi)有與之完全相同的語(yǔ)句,如果有的話只須執(zhí)行軟分析即可,否則就得進(jìn)行硬分析。
       而唯一使得oracle 能夠重復(fù)利用執(zhí)行計(jì)劃的方法就是采用綁定變量。綁定變量的實(shí)質(zhì)就是用于替代sql語(yǔ)句中的常量的替代變量。綁定變量能夠使得每次提交的sql語(yǔ)句都完全一樣。
       連接
       前兩天看到有人在pub上問(wèn)在sqlplus中通過(guò)define和variable定義的變量的區(qū)別。其實(shí)define定義的我
      
      理解不是變量而是字符常量,通過(guò)define定義之后,在通過(guò)&或者&&引用的時(shí)候不需要輸入了,僅此而已。
      
      oracle在執(zhí)行的時(shí)候自動(dòng)用值進(jìn)行了替換;而variable定義的是綁定變量,上面已經(jīng)提到。 
      
      
      
      綁定變量引用的時(shí)候用":" ,替代變量引用的時(shí)候用"&";
      綁定變量初始化 exec :num1:=2,替代變量默認(rèn)類型為char 
      
      替換變量(僅用于SQL *Plus或者用于原理和SQL *Plus相同的開(kāi)發(fā)工具):
      臨時(shí)存儲(chǔ)值
      利用它可以達(dá)到創(chuàng)建通用腳本的目的
      利用它可以達(dá)到和用戶交互,故在SQL *Plus中又稱交互式命令
       
      替換變量的格式式在變量名稱前加一個(gè)&,以便在運(yùn)行SQL命令時(shí)提示用戶輸入替換數(shù)據(jù),然后按輸入數(shù)據(jù)運(yùn)行SQL命令
      語(yǔ)法:
      (1)& :“&變量名”eg:&name;
      生命周期:?jiǎn)未我弥校恍枰暶鳎绻鎿Q字符或日期類型,最好用單引號(hào)擴(kuò)起
      使用范圍:where、order by、列表達(dá)式、表名、整個(gè)SELECT 語(yǔ)句中
        www.2cto.com  
      (2)&& :“&&變量名”eg:&&name;
      生命周期:整個(gè)會(huì)話(session連接),不需要聲明
       
      (3)define :“define 變量名=變量值”eg:DEFINE a = clark;
      生命周期:整個(gè)會(huì)話,預(yù)先聲明,使用時(shí)用&引用聲明的變量
      define variable=用戶創(chuàng)建的CHAR類型的值:define 變量名=值;
      define 變量名:查看變量命令。 
      undefine 變量名:清除變量
      define:查看在當(dāng)前會(huì)話中所有的替換變量和它們的值
       
      (4)accept
       
      生命周期:整個(gè)會(huì)話
      預(yù)先聲明,可以客戶化提示信息,使用時(shí)用&引用聲明的變量。
      定義:
      accept 變量名name number/char/date prompt '提示信息內(nèi)容'即:ACC[EPT] variable 
      [NUM[BER] | CHAR | DATE] [FOR[MAT] format] [DEF[AULT] default] [PROMPT 
      text | NOPR[OMPT]] [HIDE]
      解釋:
      PROMPT命令:用于輸出提示用戶的信息,以便使用戶了解腳本文件的功能和運(yùn)行情況
      PAUSE命令:用于暫停腳本文件的運(yùn)行
      HIDE選項(xiàng):用于隱藏用戶的輸入,使別人不可見(jiàn),安全
      這條命令的意思是:當(dāng)plsql程序段執(zhí)行到變量name的時(shí)候,此時(shí)需要用戶的交互才能繼續(xù)執(zhí)行下去,plsql程序段會(huì)顯示“提示信息內(nèi)容”讓用戶輸入相關(guān)信息(如果指定hide選項(xiàng),那么在接下去用戶輸入的東西將被用星號(hào)顯示出來(lái)增加安全,有點(diǎn)像輸入密碼),用戶輸入的內(nèi)容被接收到并且把它付給name,關(guān)于在“提示信息內(nèi)容”下用戶輸入的內(nèi)容的類型,plsql程序段開(kāi)發(fā)人員來(lái)通過(guò)number/char/date指定,變量name得到正確的值以后,繼續(xù)執(zhí)行相關(guān)下面的程序!
      例:accept a char prompt '請(qǐng)輸入員工的雇傭時(shí)間(yyyy-mm-dd):' hide 
      例:accept a char prompt 'input a:' hide
        www.2cto.com  
      set verify on/off;  #verify:是否給出原值及新值提示。
       
      具體請(qǐng)參看下面的例子:
      plsql程序1:
      [sql]
      declare  
         v_sal number(6,2);  
         v_ename emp.ename%type:='&ename';  
      begin  
         select sal into v_sal from emp  
      where lower(ename)=lower(v_ename);  
      if v_sal<2000 then  
         update emp set sal=v_sal + 200  
            where lower(ename)=lower(v_ename);  
      end if;  
      end;  
        
      /  
      plsql程序2:
      [sql]
      declare  
         v_sal number(6,2);  
         v_ename emp.ename%type:='&&ename';  
      begin  
         select sal into v_sal from emp  
      where lower(ename)=lower(v_ename);  
      if v_sal<2000 then  
         update emp set sal=v_sal + 200  
            where lower(ename)=lower(v_ename);  
      end if;    www.2cto.com  
      end;  
        
      /  
      secureCRT的一個(gè)會(huì)話中先執(zhí)行程序2,再次執(zhí)行程序1,會(huì)發(fā)現(xiàn)直接PL/SQL procedure successfully completed.
       而不讓我輸入ename,將set verify off也不行
       另一個(gè)打開(kāi)會(huì)話 將set verify off后,每次執(zhí)行程序1都會(huì)讓你輸入ename。
      這就是在前面一個(gè)會(huì)話執(zhí)行程序2的時(shí)候已經(jīng)將ename,保存為了會(huì)話的變量,而不是plsql程序的變量。
      
      
      另外一個(gè)案例完整的accept例子
      
      
      CREATE TABLE EMP (EMPNO NUMBER(4) NOT NULL,
                        ENAME VARCHAR2(10),
                        JOB VARCHAR2(9),
                        MGR NUMBER(4),
                        HIREDATE DATE,
                        SAL NUMBER(7, 2),
                        COMM NUMBER(7, 2),
                        DEPTNO NUMBER(2));
      
      INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK',    7902, TO_DATE('23-12-2013', 'DD-MM-YYYY'), 800, NULL, 20);
      INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-02-1981', 'DD-MM-YYYY'), 1600, 300, 30);
      INSERT INTO EMP VALUES (7521, 'WARD',  'SALESMAN', 7698, TO_DATE('22-02-1981', 'DD-MM-YYYY'), 1250, 500, 30);
      INSERT INTO EMP VALUES (7566, 'JONES', 'MANAGER',  7839, TO_DATE('22-04-1981',  'DD-MM-YYYY'), 2975, NULL, 20);
      INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698,TO_DATE('28-09-1981', 'DD-MM-YYYY'), 1250, 1400, 30);
      INSERT INTO EMP VALUES (7698, 'BLAKE', 'MANAGER', 7839,TO_DATE('01-03-1981', 'DD-MM-YYYY'), 2850, NULL, 30);
      INSERT INTO EMP VALUES (7782, 'CLARK', 'MANAGER', 7839,TO_DATE('09-05-1981', 'DD-MM-YYYY'), 2450, NULL, 10);
      INSERT INTO EMP VALUES (7788, 'SCOTT', 'ANALYST', 7566,TO_DATE('09-12-1982', 'DD-MM-YYYY'), 3000, NULL, 20);
      INSERT INTO EMP VALUES (7839, 'KING', 'PRESIDENT', NULL,TO_DATE('17-11-1981', 'DD-MM-YYYY'), 5000, NULL, 10);
      INSERT INTO EMP VALUES (7844, 'TURNER', 'SALESMAN', 7698,TO_DATE('08-09-1981', 'DD-MM-YYYY'), 1500, 0, 30);
      INSERT INTO EMP VALUES (7876, 'ADAMS', 'CLERK', 7788,TO_DATE('12-06-1983', 'DD-MM-YYYY'), 1100, NULL, 20);
      INSERT INTO EMP VALUES (7900, 'JAMES', 'CLERK', 7698,TO_DATE('13-12-1981', 'DD-MM-YYYY'), 950, NULL, 30);
      INSERT INTO EMP VALUES (7902, 'FORD', 'ANALYST', 7566,TO_DATE('13-12-1981', 'DD-MM-YYYY'), 3000, NULL, 20);
      INSERT INTO EMP VALUES (7934, 'MILLER', 'CLERK', 7782,TO_DATE('23-03-1982', 'DD-MM-YYYY'), 1300, NULL, 10);
      
      
      
      prompt C R E A T E   N E W   E M P L O Y E E   R E C O R D
      prompt
      prompt Enter the employee's information:
      prompt
      accept l_ename char format a10 prompt '名字: '
      accept l_empno number format '9999' prompt '編號(hào) #: '
      accept l_sal number format '99999.99' prompt 'Salary [1000]: ' default '1000.00'
      accept l_comm number format '99999.99' prompt 'Commission % [0]: ' default '0'
      accept l_hired date format 'mm/dd/yyyy' prompt 'Hire date (mm/dd/yyyy): '
      
      prompt List of available jobs:
      select distinct job
        from emp
       order by job
      /
      accept l_job char format a9 prompt 'Job: '
      
      prompt List of managers and employee numbers:
      select empno, ename
        from emp
       order by ename
      /
      accept l_mgr number format '9999' prompt 'Manager''s Employee #: '
      
      prompt List of department numbers and names:
      select deptno, dname
        from dept
       order by deptno
      /
      accept l_dept number format '99' prompt 'Department #: '
      
      insert into emp (empno, ename, job, mgr, hiredate, sal, comm, deptno)
      values (&l_empno, '&l_ename', '&l_job', &l_mgr,
              to_date('&l_hired','mm/dd/yyyy'), &l_sal, &l_comm, &l_dept)
      /
      select * from emp where empno=&l_empno
      /
      
      drop table emp;

      分享題目:oracle中關(guān)于替代變量,accpt,綁定變量,字符變量
      URL鏈接:http://www.ef60e0e.cn/article/jehgcg.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        会理县| 佛冈县| 如皋市| 洪江市| 平利县| 临江市| 商河县| 安西县| 龙里县| 耿马| 湖南省| 拜城县| 汉寿县| 错那县| 白水县| 东阳市| 会同县| 辽源市| 登封市| 孟村| 清徐县| 城市| 县级市| 万山特区| 武平县| 西藏| 双牌县| 丰都县| 读书| 兴城市| 乐东| 东乌| 陕西省| 同江市| 金阳县| 班玛县| 济南市| 仪征市| 虞城县| 宁乡县| 遂昌县|