欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle中怎么創(chuàng)建包,如何建立包

oracle創(chuàng)建包?和存儲過程

--創(chuàng)建包頭

創(chuàng)新互聯(lián)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì),高端網(wǎng)站設(shè)計(jì)1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10余年的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破近千家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

CREATE OR REPLACE PACKAGE ELS.pkg_proxy

AS

TYPE cursortype IS REF CURSOR;

-- 得到交接確認(rèn)代理人數(shù)據(jù)

PROCEDURE get_proxy_info (

v_emp_no IN VARCHAR2, --當(dāng)前登錄用戶

v_to_emp_no IN VARCHAR2, --代理人工號

v_to_emp_name IN VARCHAR2, --代理人姓名

v_proxy_date1 IN VARCHAR2, --代理開始時間: yyyy/mm/dd

v_proxy_date2 IN VARCHAR2, --代理結(jié)束時間: yyyy/mm/dd

v_from_emp_no IN VARCHAR2, --被代理人工號

v_from_emp_name IN VARCHAR2, --被代理人姓名

p_cursor OUT cursortype

);

END pkg_proxy;

--創(chuàng)建包頭

CREATE OR REPLACE PACKAGE BODY ELS.pkg_proxy

AS

-- 得到交接確認(rèn)代理人數(shù)據(jù)

PROCEDURE get_proxy_info (

v_emp_no IN VARCHAR2, --當(dāng)前登錄用戶

v_to_emp_no IN VARCHAR2, --代理人工號

v_to_emp_name IN VARCHAR2, --代理人姓名

v_proxy_date1 IN VARCHAR2, --代理開始時間: yyyy/mm/dd

v_proxy_date2 IN VARCHAR2, --代理結(jié)束時間: yyyy/mm/dd

v_from_emp_no IN VARCHAR2, --被代理人工號

v_from_emp_name IN VARCHAR2, --被代理人姓名

p_cursor OUT cursortype

)

AS

BEGIN

OPEN p_cursor FOR

WITH v AS

(

--查找當(dāng)前登錄人是否為管理員

SELECT *

FROM employee

WHERE dept_id IN (

SELECT ID

FROM department

START WITH ID =

(SELECT dept_id

FROM employee

WHERE emp_no = v_emp_no

AND is_admin IN (

SELECT r_value

FROM role_conditions

WHERE r_key =

'ProxySearch')

UNION

SELECT dept_id

FROM employee_add

WHERE emp_no = v_emp_no

AND is_admin IN (

SELECT r_value

FROM role_conditions

WHERE r_key =

'ProxySearch'))

CONNECT BY PRIOR ID = parent_id)

UNION

SELECT *

FROM employee

WHERE emp_no = v_emp_no)

SELECT DISTINCT *

FROM (SELECT a.currentuser, a.toagrentuser,

DECODE (a.agent_type,

'A', '當(dāng)前交接確認(rèn)代理',

'B', '將來離職簽核代理',

'C', '當(dāng)前離職簽核代理',

'D', '將來交接確認(rèn)代理',

''

) agent_type,

a.from_date, a.TO_DATE,

DECODE

(a.to_date1,

'', '無',

TO_CHAR (a.TO_DATE,

'yyyy/mm/dd am hh:mi:ss'

)

) to_date1,

a.flowinfo, b.emp_cname AS currentusername,

b1.emp_cname AS toagrentusername, workitem

FROM (

--當(dāng)前交接確認(rèn)代理

SELECT SUBSTR

(x.currentuser,

1,

INSTR (x.currentuser, '(') - 1

) AS currentuser,

SUBSTR

(x.toagrentuser,

1,

INSTR (x.toagrentuser, '(') - 1

) AS toagrentuser,

'A' AS agent_type,

x.create_date AS from_date,

x.create_date AS TO_DATE,

NULL AS to_date1, x.workid,

NULL AS formid, y.NAME workitem,

(SELECT e.emp_no

|| '('

|| e.emp_cname

|| ')'

FROM employee e

WHERE e.emp_no = y.emp_no)

AS flowinfo

FROM currentworkagrent x,

worktransferitem_m y

WHERE x.workid = y.ID

UNION ALL

--將來交接確認(rèn)代理

SELECT SUBSTR

(currentuser,

1,

INSTR (currentuser, '(') - 1

) AS currentuser,

SUBSTR

(toagrent,

1,

INSTR (toagrent, '(') - 1

) AS toagrent,

'D' AS agent_type, starttime,

endtime, endtime AS to_date1, NULL,

NULL, NULL, NULL

FROM futureagrent) a,

employee b,

employee b1

WHERE a.currentuser = b.emp_no(+)

AND a.toagrentuser = b1.emp_no(+)) a

WHERE currentuser IN (SELECT emp_no

FROM v)

AND (currentuser = v_from_emp_no OR v_from_emp_no IS NULL

)

AND ( currentusername = v_from_emp_name

OR v_from_emp_name IS NULL

)

AND (toagrentuser = v_to_emp_no OR v_to_emp_no IS NULL)

AND ( toagrentusername = v_to_emp_name

OR v_to_emp_name IS NULL

)

AND from_date =

TO_DATE (NVL (v_proxy_date2, '2099/12/31'),

'yyyy/mm/dd'

)

AND TO_DATE =

TO_DATE (NVL (v_proxy_date1, '1000/12/31'),

'yyyy/mm/dd'

)

ORDER BY a.agent_type, a.from_date DESC;

END;

END pkg_proxy;

如何創(chuàng)建自己的InstantClient包

IC介紹

許多人正在使用Oracle Instant Client,它提供一個部署基于OCI、OCCI、JDBC OCI應(yīng)用容易和快速的方法。

通過添加更多的工具,Instant Client可以變成一個更加強(qiáng)大的工具,如下:

1. tnsping

2. sqlldr

3. tkprf

4. exp/imp

5. OCM

6. 你自己的工具

這樣做的主要優(yōu)點(diǎn)是:

1. 安裝是一件輕而易舉的事情,只要解壓即可完成。

2. 體積小,未壓縮100MB到150MB或壓縮50MB,它可以安裝在USB盤上

3. 不涉及到SA(軟件架構(gòu))

比較一個完整的Oracle安裝需要大量的磁盤空間,而且還涉及到SA。

IC需求

1. 一個帶有150MB+磁盤空間的Unix/Linux賬號:

hadoop@192.168.8.162:/home/hadoop/oracle

2. 安裝Oracle 11gR2的相同平臺,一個具有讀訪問權(quán)限的賬號:

root@192.168.8.192:/u01/product/oracle/11.2.0/db_1

IC安裝

從Oracle官方網(wǎng)址下載安裝包,

注:請根據(jù)操作系統(tǒng)版本下載相應(yīng)的安裝包,這里下載Linux X86-64安裝包。

instantclient-basic-linux.x64-11.2.0.4.0.zip

instantclient-jdbc-linux.x64-11.2.0.4.0.zip

instantclient-sdk-linux.x64-11.2.0.4.0.zip

instantclient-sqlplus-linux.x64-11.2.0.4.0.zip

注:下載Instant Client時需要創(chuàng)建一個Oracle賬號才能下載。

使用SSH客戶端使用安裝賬號登錄到服務(wù)器,在根目錄下創(chuàng)建一個oracle目錄:

$mkdir /home/hadoop/oracle

上傳所有壓縮包或至少basic和sqlplus兩個包到你賬號的根目錄下oracle中。

解壓到當(dāng)前目錄下完成安裝。

$ cd /home/hadoop/oracle

$ unzipinstantclient-basic-linux.x64-11.2.0.4.0.zip

$ unzipinstantclient-sqlplus-linux.x64-11.2.0.4.0.zip

$ unzip instantclient-sdk-linux.x64-11.2.0.4.0.zip

$ unzip instantclient-jdbc-linux.x64-11.2.0.4.0.zip

解壓完畢后會在當(dāng)前目錄下生成一個instantclient_11_2目錄。

$ ll /home/hadoop/oracle/instantclient_11_2

IC配置

配置下面的環(huán)境變量到你的Shell配置文件中。

$ vi ~/.bashrc

跳到文件的末尾,添加下面這些環(huán)境變量:

export RACLE_IC_HOME=/home/hadoop/oracle/instantclient_11_2

exportORACLE_HOME=$ORACLE_IC_HOME

exportTNS_ADMIN=$ORACLE_IC_HOME

exportPATH=$PATH:$ORACLE_IC_HOME

exportLD_LIBRARY_PATH=$ORACLE_IC_HOME

exportCLASSPATH=$ORACLE_IC_HOME/ojdbc6.jar:./

$ source ~/. bashrc

或 $ . ~/.bashrc

注:如果需要讓所有用戶都能使用,需要把上面的配置添加/etc/profile中。

在$ORACLE_IC_HOME目錄下創(chuàng)建一個tnsnames.ora文件:

$ vi /home/hadoop/oracle/instantclient_11_2/tnsnames.ora

orcl=(description=(address=(protocol=tcp)(host=192.168.8.161)(port=1521))(connect_data=(server=dedicated)(service_name=wcdma)))

ora =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.8.161)(PORT = 1521)))(CONNECT_DATA =(SERVER =DEDICATED)(SERVICE_NAME = wcdma)))

SQL*Plus

$ sqlplus kqi/kqi@192.168.8.161:1521/wcdma

$ sqlplus kqi/kqi@orcl

SQL*Plus: Release 11.2.0.4.0 Production onThu Nov 20 14:01:49 2014

Copyright (c) 1982, 2013, Oracle. All rights reserved.

Connected to:

Oracle Database 11g Enterprise EditionRelease 11.2.0.2.0 - 64bit Production

With the Partitioning, OLAP, Data Miningand Real Application Testing options

SQL

ERROR:

ORA-12154: TNS:could not resolve theconnect identifier specified

對于這種問題,排除添加的配置格式錯誤后。可能原因是讀取的tnsnames.ora路徑根本就不是$ORACLE_HOME/network/admin下。

注:tnsnames.ora文件的查找路徑順序?yàn)椋?/p>

$HOME = $TNS_ADMIN = /etc =$ORACLE_HOME/network/admin/。

現(xiàn)在我們已經(jīng)有一個構(gòu)建自己的Instant Client包的基礎(chǔ)了。下面是Instant Client的核心文件(位于/home/hadoop/oracle/instantclient_11_2中):

1. libclntsh.so.11.1:客戶端代碼庫

2. libociei.so:OCI InstantClient數(shù)據(jù)共享庫

3. libnnz11.so:安全庫

4. libocci.so.11.1:Oracle C++調(diào)用接口庫

5. libocijdbc11.so:JDBC OCI庫

6. ojdbc6/5.jar:JDBC驅(qū)動(OCI和Thin)

7. orai18n.jar:字符集轉(zhuǎn)換和本地支持庫

Tnsping

從安裝Oracle的服務(wù)器上拷貝tnsping過來,執(zhí)行命令:

$ cd /home/hadoop/oracle/instantclient_11_2

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/tnsping./

現(xiàn)在讓在IC安裝服務(wù)器上嘗試運(yùn)行下它:

$ tnsping ora

TNS Ping Utility for Linux: Version11.2.0.4.0 - Production on 20-NOV-2014 14:30:21

Copyright (c) 1997, 2013, Oracle. All rights reserved.

Message 3511 not found; No message file forproduct=network, facility=TNSMessage 3512 not found; No message file forproduct=network, facility=TNSMessage 3513 not found; No message file forproduct=network, facility=TNSMessage 3509 not found; No message file forproduct=network, facility=TNS

運(yùn)行后tnsping抱怨一些文件丟失,更具體的說一個消息文件丟失。現(xiàn)在,我們把該文件從Oracle安裝服務(wù)器上拷貝過來,進(jìn)入到instantclient_11_2目錄:

$ mkdir -p network/mesg

$ cd network/mesg/

現(xiàn)在從安裝Oracle服務(wù)上拷貝tnsus.msb文件到該目錄中:

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/network/mesg/tnsus.msb ./

讓我們再嘗試一次tnsping,結(jié)果如下:

$ tnsping ora

TNS Ping Utility for Linux: Version11.2.0.4.0 - Production on 20-NOV-2014 14:49:54

Copyright (c) 1997, 2013, Oracle. All rights reserved.

Used parameter files:

Used TNSNAMES adapter to resolve the alias

Attempting to contact (DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.8.161)(PORT =1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = wcdma)))

OK (0 msec)

Sqlldr

本節(jié)將添加另外一個工具sqlldr。

首先,我們從安裝Oracle的服務(wù)器上拷貝sqlldr到IC安裝目錄instantclient_11_2下。

$ cd /home/hadoop/oracle/instantclient_11_2

$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/sqlldr ./

嘗試運(yùn)行它:

$ sqlldr

Message 2100 not found; No message file forproduct=RDBMS, facility=ULMessage 2100 not found; No message file forproduct=RDBMS, facility=UL

首先我們需要在instantclient_11_2下創(chuàng)建rdbms/mesg目錄。

$ cd /home/hadoop/oracle/instantclient_11_2

$ mkdir -p rdbms/mesg

$ cd rdbms/mesg

把ORACLE安裝目錄下rdmsb/mesg/ulus.msb拷貝到當(dāng)前目錄。

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/ulus.msb./

現(xiàn)在,讓我們再次嘗試運(yùn)行它。

$ sqlldr

SQL*Loader: Release 11.2.0.4.0 - Productionon Thu Nov 20 16:40:10 2014

Copyright (c) 1982, 2011, Oracle and/or itsaffiliates. All rights reserved.

Usage: SQLLDR keyword=value[,keyword=value,...]

Valid Keywords:

Exp/imp

從安裝Oracle服務(wù)器上拷貝二進(jìn)制文件過來。

$ cd /home/hadoop/oracle/instantclient_11_2

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/imp ./

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/exp ./

嘗試運(yùn)行imp和exp,結(jié)果如下:

$ imp

Message 100 not found; No message file forproduct=RDBMS, facility=IMP: Release 11.2.0.4.0 - Production on Thu Nov 2017:02:57 2014

Copyright (c) 1982, 2011, Orac

Invalid format of Import utility name

Verify that ORACLE_HOME is properly set

Import terminated unsuccessfully

IMP-00000: Message 0 not found; No messagefile for product=RDBMS, facility=IMP

$ exp

Message 206 not found; No message file forproduct=RDBMS, facility=EXP: Release 11.2.0.4.0 - Production on Thu Nov 20 17:03:392014

Copyright (c) 1982, 2011, Orac

Invalid format of Export utility name

Verify that ORACLE_HOME is properly set

Export terminated unsuccessfully

EXP-00000: Message 0 not found; No messagefile for product=RDBMS, facility=EXP

再從安裝Oracle服務(wù)器上拷貝rdbms/mesg下的expus.msb和ipus.msb過來。

$ cd rdbms/mesg/

$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/impus.msb ./

$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/rdbms/mesg/expus.msb ./

再次運(yùn)行imp/exp工具錯誤提示消失,可以正常運(yùn)行。

Tkprof

現(xiàn)在我們繼續(xù)添加我最喜歡的工具tkprof。

從安裝Oracle的服務(wù)器拷貝tkprof到instantclient_11_2目錄下。

$ cd /home/hadoop/oracle/instantclient_11_2

$ scp root@192.168.8.192:/u01/product/oracle/11.2.0/db_1/bin/tkprof ./

$ mkdir -p oracore/mesg/

$ cd oracore/mesg/

$ scproot@192.168.8.192:/u01/product/oracle/11.2.0/db_1/oracore/mesg/lrmus.msb ./

使用示例:

$ tkprof test.trc test.out

Instant Client Bundle

現(xiàn)在,我們已經(jīng)讓所有工具都能正常工作。簡單的使用工具壓縮打包instantclient_11_2目錄,這樣你就獲得你自己的Instant Client包。例如:

$ cd /home/hadoop/oracle

$ tar zcf instantclient_11_2.tar.gzintantclient_11_2

正如你所看到的,打包成的instant client帶有tnsping,sqlldr, exp/imp,tkprof工具,這讓IC更加的功能強(qiáng)大。

安裝自定義的IC包步驟如下:

1. 上傳到服務(wù)器上解壓縮

2. 修改環(huán)境變量

$ vi ~/.bashrc

跳到文件的末尾,添加下面這些環(huán)境變量:

export ORACLE_IC_HOME=解壓目錄/instantclient_11_2

export ORACLE_HOME=$ORACLE_IC_HOME

export TNS_ADMIN=$ORACLE_IC_HOME

export PATH=$PATH:$ORACLE_IC_HOME

export LD_LIBRARY_PATH=$ORACLE_IC_HOME

exportCLASSPATH=$ORACLE_IC_HOME/ojdbc6.jar:./

$ source ~/. bashrc

或 $ . ~/.bashrc

3. 添加連接數(shù)據(jù)庫的配置

$ vi $ORACLE_IC_HOME/tnsnames.ora

安裝完成,現(xiàn)在就可以使用Instant Client中的工具啦!

oracle創(chuàng)建包編譯報(bào)錯

先要創(chuàng)建package description 才能創(chuàng)建package body

SQL create or replace package my_package is

2 procedure my_procedure(name varchar2,num number);

3 function my_function(name varchar2) return number;

4 end;

6 /

Package created.

SQL show error

No errors.

請問Oracle中如何在通過創(chuàng)建一個package,然后在package中創(chuàng)建procedure的語法是怎么樣的啊

先create package,在里面聲明procedure

然后再create package body,在package body里面編寫procedure的代碼即可(相當(dāng)于create procedure)。

包里沒有create procedure

示例如下:

CREATE OR REPLACE PACKAGE pkg_test IS

PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2);

...

END test;

/

CREATE OR REPLACE PACKAGE BODY pkg_test IS

...

PROCEDURE pro_test(V_OLD IN VARCHAR2,V_NEW IN VARCHAR2) IS

BEGIN

...

END;

...

END pkg_test;

oracle 創(chuàng)建一個程序包規(guī)范,名稱為package_salary_details,包含一個過程和一個函數(shù)。

這是第一問

create or replace procedure proc_SALARY(v_EMPCODE varchar2) Is

v_workoingdays salary_details.workingdays%type;

v_salary salary_details.salary%type;

begin

select salary into v_salary from salary_details where EMPCODE = v_EMPCODE;

v_salary = v_salary * 0.95;

dbms_output.put_line(v_salary);

exception

when no_data_found then

dbms_output.put_line('未找到相應(yīng)員工');

end;

begin

proc_SALARY('1');

end;

本文名稱:oracle中怎么創(chuàng)建包,如何建立包
分享路徑:http://chinadenli.net/article8/hecdip.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站網(wǎng)站營銷ChatGPT外貿(mào)建站網(wǎng)站制作營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)