1. 程式人生 > >ORACLE中對in操作使用變數繫結的方法

ORACLE中對in操作使用變數繫結的方法

ORACLE中對in操作使用變數繫結的方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

ORACLE資料庫程式設計中使用變數繫結,可以重用共享池的查詢,最小化硬解析的需求,提高資料庫效能。   我們知道in操作符接受兩種list, 一個是由一個個item組成的list, 另一個是由另一個表中選出的list。第一種方式由於值個數不一定,變數繫結具有一定的困難。於是我們思路就集中到準備將一個字串傳入到sql語句中,然後使用一個方法將字串parse成一個table, 再傳回in operator

來達到變數繫結的目的。

下面以開發中經常遇見的查詢網點辦理業務資料或者操作員業務資料為例,來說明如何實現這種變數的繫結操作。
1
、首先我們來建立方法,及由此方法返回的table型別:
[email protected]> create or replace type numTableType as table of number
/
2
、建立函式,傳入引數為字串,返回值為TABLE型別。
[email protected] > create or replace function str2numList( p_string in varchar2 ) return
numTableType
as
v_str long default p_string ;
v_n number;
v_data numTableType := numTableType();
begin
loop
v_n := to_number(instr( v_str, ',' ));
exit when (nvl(v_n,0) = 0);
v_data.extend;
v_data( v_data.count ) := ltrim(rtrim(substr(v_str,1,v_n-1)));
v_str := substr( v_str, v_n+1 );
end loop;
return v_data;
end;
/
3

、程式中編寫使用。

Procedure Vwbstat
(
p_Begindate Date,
p_EnddateDate,
p_KindVarchar2,

p_User_Table Varchar2,--這裡傳入的字串為52802100101,52802100102,t_RsOut Reccur
) As
v_Index Number;
Begin
Open t_Rs For
Select* from
Where Arcopr

In (Select * From The (Select Cast(Str2numlist(p_User_Table) As Numtabletype) From dual) )Order By Arcopr;

/

相關推薦

ORACLEin操作使用變數方法

ORACLE中對in操作使用變數繫結的方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />在ORACLE資料庫程式設計中使用變數繫結,可以重用共享池的查詢,最小

在.aspx.cs(後臺)aspx控制元件前臺Javascript函式的幾種方法

最近中途接手了一個專案,做web開發,用的技術是aspx.net,可是真的做起來,覺得非常彆扭,原因在於有很多功能其實在前臺可以處理的,但是因為用到了很多webcontrol,導致不斷postback。如果利用ajax來處理可能會好些。目前只能通過在後臺對這些控制元件繫結前臺

JavaScript,四種事件方法及attachEvent與addEventListener的區別

        我們在對事件進行繫結的時候,除了常用的對元素物件後面通過點加屬性來事件繫結,如: a.onclick = function(){ //code }        我們還能通過attachEvent和addEventListener來進行事件繫結,這兩

React:ES6:ES7的6種this方法

對於大多數開發者來說,JavaScript 的 this 關鍵字會造成諸多困擾。由於 JavaScript 不具備如 Java 等語言的嚴格類模型,因而除非是在處理回撥,否則程式碼中的this 指向並不清晰。 一般來說,對於部分執行中的程式碼(非回撥)會通過 new 關鍵字和 Function.protot

python3的types模組MethodType方法

python3中運用types模組中的MethodType繫結方法到例項到類是非常常用的,這樣可以節省大量的時間和記憶體,可以避免大量重寫相同的方法!當然了,這也比較容易混淆! class Student(object): pass def se

CPU親和性的使用與機制--含XenVCPU和PCPU的方法

CPU的親和性, 就是程序要在指定的 CPU 上儘量長時間地執行而不被遷移到其他處理器,親和性是從affinity翻譯過來的,應該有點不準確,給人的感覺是親和性就是有傾向的意思,而實際上是倒向的意思,稱為CPU關聯性更好,程式設計師的土話就是繫結CPU,綁核。 在多核執行的

ORA——00600錯誤的原因是:(Oracleclob型別欄位的操作

ORA——00600錯誤的原因是:(Oracle中對clob型別欄位的操作) 改正的程式碼如下: //3.2生成資料插入語句 (增加的方式) StringBuilder insertSql = new StringBuilder(“INSERT INTO “); insertSql.a

ExtJsgird列增加操作列,並給操作按鈕事件

在ExtJs4中,grid元件有Ext.grid.column.Action元件,所有要增加操作列,只需指定列的xtype為actioncolumn即可,例如: Ext.create('Ext.grid.Panel', { renderTo: Ext.getBod

oracle筆記--case的使用和變數

oracle裡的case功能非常強大, 簡單的用法: select  CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END from student; 還沒有當做預處理去使用 select

[oracle]pl/sql in/out變數的使用和過程過程的呼叫

--in/out 型別變數的使用 以及過程中呼叫過程,獲取out型別的返回值 --建一張表books --簡單過程一 插入一條記錄 createtable books(bookid number,bookname varchar(50),pubhouse varchar(50));    --簡

記錄下Directx11幾個易錯點_C++和HLSL的變數

    最近遇到幾個Directx11的bug,有些最後弄懂了,有些沒有,記錄下避免下次再犯錯。     一個bug是在Directx11推薦用的數學庫xnamath,裡面的XMCOLOR居然無法和HLSL裡面的float4繫結,如果你要用顏色的變數和HLSL的float4

Oracleclob型別欄位的操作

下面這篇文章說的很詳細,我再做兩點補充說明:        第一,LOB資料不能象其它型別資料一樣直接插入(INSERT)。插入前必須先插入一個空的LOB物件,CLOB型別的空物件為EMPTY_CLOB(),BLOB型別的空物件為EMPTY_BLOB()。之後通過SELECT

ExtJs4gird列增加操作列,並給操作按鈕事件

在ExtJs4中,grid元件有Ext.grid.column.Action元件,所有要增加操作列,只需指定列的xtype為actioncolumn即可,例如: Ext.create('Ext.grid.Panel', { renderTo: Ext.getBody

AngularJScheckbox是否選中的變數問題

在html中 <input type="checkbox" ng-checked="ifItemChecked"></span> 在controller裡面 $scope.ifItemChecked = true; 即可實現選中控制

Oracle面對“資料傾斜列使用變數”場景的解決方案

1.背景知識介紹 2.構造測試用例 3.場景測試 4.總結 1.背景知識介紹     我們知道,Oracle在傳統的OLTP(線上事務處理)類系統中,強烈推薦使用繫結變數,這樣可以有效的減少硬解析從而增加系統的併發處理能力。甚至在有些老舊系統,由於在開始開發階段缺乏

OracleOracle的常用操作

轉換成 sql查詢語句 sub 備份 關系 %d des 統計分析 put 一、ORACLE的啟動和關閉 1、在單機環境下 要想啟動或關閉ORACLE系統必須首先切換到ORACLE用戶,如下 su - oracle a、啟動ORACLE系統 oracle>svrmgr

sql serve數據庫in查詢到的數據排序

charindex har 數據 數據庫 cast number stat sta order by SELECT * , ROW_NUMBER() OVER ( ORDER BY ffavoriteid ) AS numFROM V_EBFavorite

oraclenot inin 的替代寫法

clas left join lec body post tab temp bsp blog -- not in 的替代寫法select col from table1 where col not in(select col from table2); select c

Oraclein參數的個數限制

select 性方面 from 個數 lec ... 子查詢 括號 記錄 遇到了這個問題 “oracle中in參數個數限制”,這裏記錄下, in後括號中的參數個數有限制,Oracle 9i 中個數不能超過256,Oracle 10g個數不能超過1000. 當in的個

robotframework(rf)時間操作的datetime庫常用關鍵字

blog 當前時間 img 定時 時間類 之間 減法 ram date 1、對固定日期進行操作,增加或減去單位時間或者時間段 2、對兩個時間段進行操作 3、對時間格式轉化,獲取時間戳。 4、從完整時間中取指定年月日等 5、對時間類型進行格式化 6、獲取當前時間或者