日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Oracle: 使用execute immediate,當列名需要動

系統 2076 0

I write this post is just to make a summary of a point met this week.

寫得不好的話,請園子里的朋友們多提意見。

這個星期的工作遇到需要給Pakage加一個function,這個 function需要動態組織Sql ,

以實現不同的 logic.

In oracle, we know that:

EXECUTE IMMEDIATE代替了以前Oracle8i中DBMS_SQL package包.它解析并馬上執行動態的SQL語句或非運行時創建的PL/SQL塊.動態創建和執行SQL語句性能超前.

使用起來也非常容易,for example:

declare
? l_dept??? pls_integer := 20;
? l_nam???? varchar2(20);
? l_loc???? varchar2(20);
?begin
? execute immediate 'select dname, loc from dept where deptno = :1'
??? into l_nam, l_loc
??? using l_dept ;
?end;

這就是一個典型的檢索并傳值的例子。

我的例子稍微有一點不同,the column name needed to be binded dynamically.

??????? PKG_***.GET_****(' service_credit_percent ', 1, 2, inValExtractControlId, inEndDate)

其中, service_credit_percent 就是我想動態bind的列名,

我發現其它參數都可以,就是列名不能作為參數通過 bind 來傳遞。

向同事請教后,采取以下措施:

將列名,在拼接sql 時,直接拼接進 string:

?sql_select := 'SELECT sum(' ||? v_service_credit_pct || ')'?|| ;

v_service_credit_pct ? 是 function用來接受列名的參數.

其它參數則可以使用bind來傳遞。

Oracle: 使用execute immediate,當列名需要動態綁定時.


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 横山县| 哈密市| 察雅县| 大石桥市| 拜泉县| 阿坝县| 陵川县| 盱眙县| 连平县| 崇左市| 凤庆县| 宝兴县| 玉山县| 孝义市| 苗栗县| 儋州市| 台东市| 会宁县| 沅江市| 土默特右旗| 青河县| 潜江市| 朔州市| 辰溪县| 东兰县| 依兰县| 登封市| 日土县| 柏乡县| 长汀县| 滨州市| 璧山县| 冕宁县| 喀什市| 洛浦县| 台山市| 大田县| 普兰店市| 当涂县| 太原市| 武山县|