<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            軟件測試數據庫中基于Oracle的高性能動(dòng)態(tài)SQL程序開(kāi)發(fā)

            發(fā)布: 2010-6-25 08:15 | 作者: 不詳 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng)采編 | 查看: 24次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

            軟件測試數據庫中基于Oracle的高性能動(dòng)態(tài)SQL程序開(kāi)發(fā)

            1. 靜態(tài)SQLSQL與動(dòng)態(tài)SQL

            Oracle編譯PL/SQL程序塊分為兩個(gè)種:其一為前期聯(lián)編(early binding),即SQL語(yǔ)句在程序編譯期間就已經(jīng)確定,大多數的編譯情況屬于這種類(lèi)型;另外一種是后期聯(lián)編(late binding),即SQL語(yǔ)句只有在運行階段才能建立,例如當查詢(xún)條件為用戶(hù)輸入時(shí),那么Oracle的SQL引擎就無(wú)法在編譯期對該程序語(yǔ)句進(jìn)行確定,只能在用戶(hù)輸入一定的查詢(xún)條件后才能提交給SQL引擎進(jìn)行處理。通常,靜態(tài)SQL采用前一種編譯方式,而動(dòng)態(tài)SQL采用后一種編譯方式。

            本文主要就動(dòng)態(tài)SQL的開(kāi)發(fā)進(jìn)行討論,并在最后給出一些實(shí)際開(kāi)發(fā)的技巧。

            2. 動(dòng)態(tài)SQL程序開(kāi)發(fā)

            理解了動(dòng)態(tài)SQL編譯的原理,也就掌握了其基本的開(kāi)發(fā)思想。動(dòng)態(tài)SQL既然是一種”不確定”的SQL,那其執行就有其相應的特點(diǎn)。Oracle中提供了Execute immediate語(yǔ)句來(lái)執行動(dòng)態(tài)SQL,語(yǔ)法如下:

            Excute immediate 動(dòng)態(tài)SQL語(yǔ)句 using 綁定參數列表 returning into 輸出參數列表;

            對這一語(yǔ)句作如下說(shuō)明:

            1) 動(dòng)態(tài)SQL是指DDL和不確定的DML(即帶參數的DML)

            2) 綁定參數列表為輸入參數列表,即其類(lèi)型為in類(lèi)型,在運行時(shí)刻與動(dòng)態(tài)SQL語(yǔ)句中的參數(實(shí)際上占位符,可以理解為函數里面的形式參數)進(jìn)行綁定。

            3) 輸出參數列表為動(dòng)態(tài)SQL語(yǔ)句執行后返回的參數列表。

            4) 由于動(dòng)態(tài)SQL是在運行時(shí)刻進(jìn)行確定的,所以相對于靜態(tài)而言,其更多的會(huì )損失一些系統性能來(lái)?yè)Q取其靈活性。

            為了更好的說(shuō)明其開(kāi)發(fā)的過(guò)程,下面列舉一個(gè)實(shí)例:

            設數據庫的emp表,其數據為如下:


             
             要求:

            1.創(chuàng )建該表并輸入相應的數據。

            2.根據特定ID可以查詢(xún)到其姓名和薪水的信息。

            3.根據大于特定的薪水的查詢(xún)相應的員工信息。

            根據前面的要求,可以分別創(chuàng )建三個(gè)過(guò)程(均使用動(dòng)態(tài)SQL)來(lái)實(shí)現:

            過(guò)程一:

            create or replace procedure create_table as

            begin

            execute immediate '

            create table emp(id number,

            name varchar2(10)

            salary number; )'; --動(dòng)態(tài)SQL為DDL語(yǔ)句

            insert into emp

            values (100,'jacky',5600);

            insert into emp

            values (101,'rose',3000);

            insert into emp

            values (102,'john',4500);

            end create_table;

            過(guò)程二:

            create or replace procedure find_info(p_id number) as

            v_name varchar2(10);

            v_salary number;

            begin

            execute immediate '

            select name,salary from emp

            where id=:1'

            using p_id

            returning into v_name,v_salary; --動(dòng)態(tài)SQL為查詢(xún)語(yǔ)句

            dbms_output.put_line(v_name ||'的收入為:'||to_char(v_salary));

            exception

            when others then

            dbms_output.put_line('找不到相應數據');

            end find_info;

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: oracle Oracle ORACLE sql SQL Sql 高性能 軟件測試 數據庫

            21/212>

            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>