oracle日常函数应用,oracle日常 常用函数与脚本
--在hibinate 中如何傳遞參數給 存儲過程
---新建一個存儲要存儲集合id 的臨時表-- Create table
create table MBRC_OLTPORTID
(
ID NUMBER(18) not null
)
tablespace NG_DATA
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
next 1M
minextents 1
maxextents unlimited
);
----存儲過程接收list參數
----定義一個存儲Long類型的數據庫對象CREATE TYPE AOBJECT AS OBJECT(
a NUMBER(18)
)
------定義一個List數據庫對象CREATE ?TYPE ALIST ?AS VARRAY(100) OF AOBJECT;
---------存儲過程(讀取list 存放在新建的臨時表里)create or replace procedure mbrc_uptowncalculaterate(p1 in ALIST ,p2 out varchar2) as
begin
TRUNCATE TABLE MBRC_OLTPORTID;
for i in 1..p1.count loop
insert into MBRC_OLTPORTID values(p1(i).a);
end loop;
p2:='null';
end;
----JAVA CODE@Override
public Boolean calculateUptownRate(final ArrayList oltPorIds) {
final String sql = "{CALL mbrc_uptowncalculaterate(?,?)}";
return this.getHibernateTemplate().execute(
new HibernateCallback() {
@SuppressWarnings("deprecation")
public Boolean doInHibernate(Session session)
throws HibernateException, SQLException {
Connection conn = null;
CallableStatement statement = null;
try {//獲取數據庫連接
conn = SessionFactoryUtils
.getDataSource(getSessionFactory()).getConnection();
ARRAY aArray = getArray(conn, "AOBJECT", "ALIST", oltPorIds);
statement = session.connection().prepareCall(sql);
statement.setArray(1, aArray);
statement.registerOutParameter(2, Types.VARCHAR);
statement.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
} finally {
statement.close();
statement = null;
}
return statement.getString(2).equals("null");
}
});
}
/**
private static ARRAY getArray(Connection con, String OracleObj,
String Oraclelist, ArrayList objlist) throws Exception {
ARRAY list = null;
if (objlist != null && objlist.size() > 0) {
StructDescriptor structdesc = new StructDescriptor(OracleObj, con);
STRUCT[] structs = new STRUCT[objlist.size()];
Object[] result = new Object[0];
for (int i = 0; i < objlist.size(); i++) {
result = new Object[1];// 數組大小應和你定義的數據庫對象(AOBJECT)的屬性的個數
result[0] = new Long(objlist.get(i).longValue()); // 將list中元素的數據傳入result數組
structs[i] = new STRUCT(structdesc, con, result);
}
ArrayDescriptor desc = ArrayDescriptor.createDescriptor(Oraclelist,
con);
list = new ARRAY(desc, con, structs);
} // if
return list;
}
---merge into 9i新特性 更新表,以及刷存量數據是效率最高
MERGE INTO table_name alias1
USING (table|view|sub_query) alias2
ON (join condition)
WHEN MATCHED THEN
UPDATE table_name
SET col1 = col_val1,
col2 = col_val2
WHEN NOT MATCHED THEN
INSERT (column_list) VALUES (column_values);
------查詢當天是一個月中的第幾周
select ?to_char(sysdate + 1, 'iw') + 1 - to_char(last_day(add_months(sysdate,
-1)) + 2,
'iw') from dual;
------oracle job ?之submmit 用法參數
使用Submit()過程,工作被正常地計劃好。
這個過程有五個參數:job、what、next_date、interval與no_parse。
PROCEDURE ? Submit ? ( ? job ? ? ? ? ? ? ? OUT ? binary_ineger,
What ? ? ? ? ? ? IN ? ? varchar2,
next_date ? IN ? ? date,
interval ? ? IN ? ? varchar2,
no_parse ? ? IN ? ? booean:=FALSE)
job參數是由Submit()過程返回的binary_ineger。這個值用來唯一標識一個工作。
what參數是將被執行的PL/SQL代碼塊。
next_date參數指識何時將運行這個工作。
interval參數何時這個工作將被重執行。
no_parse參數指示此工作在提交時或執行時是否應進行語法分析——TRUE
指示此PL/SQL代碼在它第一次執行時應進行語法分析,
而FALSE指示本PL/SQL代碼應立即進行語法分析。
NLS_INITCAP(x[,y])
【功能】返回字符串并將字符串的第一個字母變為大寫,其它字母小寫;
【參數】x字符型表達式
【參數】Nls_param可選,
查詢數據級的NLS設置:select * from nls_database_parameters;
例如:
指定排序的方式(nls_sort=) 。
nls_sort=SCHINESE_RADICAL_M(部首、筆畫)
nls_sort=SCHINESE_STROKE_M(筆畫、部首SCHINESE_PINYIN_M(拼音))
【返回】字符型
【示例】
select nls_initcap('ab cde') "test",
nls_initcap('a c b d e','nls_sort= SCHINESE_PINYIN_M') "test1" from dual;
返回:Ab Cde, A C B D E
select nls_initcap('ab cde') "test",
nls_initcap('a c b d e','NLS_LANGUAGE=AMERICAN') "test1" from dual;
總結
以上是生活随笔為你收集整理的oracle日常函数应用,oracle日常 常用函数与脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 显卡GT555m能玩什么游戏
- 下一篇: Java 中有哪些嵌入式数据库