真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么調(diào)用接口,oracle接口怎么做

如何在Oracle/2000中調(diào)用Windows API函數(shù)

 1.初始化外部函數(shù)

創(chuàng)新互聯(lián)擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕十多年,專業(yè)且經(jīng)驗(yàn)豐富。十多年網(wǎng)站優(yōu)化營銷經(jīng)驗(yàn),我們已為上1000+中小企業(yè)提供了成都做網(wǎng)站、網(wǎng)站建設(shè)解決方案,定制網(wǎng)站制作,設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!

就是說明包含外部函數(shù)的動(dòng)態(tài)鏈接庫的位置,并從中分離出外部函數(shù)的原型,并將外部函數(shù)中主語言的數(shù)據(jù)類型和PL/SQL數(shù)據(jù)類型做一一對(duì)應(yīng)的匹配。這是在包體(PackageBody)中進(jìn)行的。具體分以下幾步:

(1)用OQA_FFI.LOAD_LIBRARY得到包含外部函數(shù)的動(dòng)態(tài)鏈接庫的庫柄,此時(shí)需提供動(dòng)態(tài)鏈接庫的名字和位置。

(2)用ORA_FFI.REGISTER_FUNCTION得到外部函數(shù)的函數(shù)柄,這時(shí)需提供動(dòng)態(tài)鏈接庫的庫柄和外部函數(shù)名。

(3)用ORA_FFI.REGISTER_PARAMETER來注冊(cè)外部函數(shù)的參數(shù)類型,對(duì)每一個(gè)參數(shù)都要提供它的外部函數(shù)柄和相應(yīng)的PL/SQL數(shù)據(jù)類型。參數(shù)注冊(cè)的順序必須與它們出現(xiàn)在外部函數(shù)原型中的順序一致。

(4)用ORA_FFI.REGISTER_RETURN來注冊(cè)外部函數(shù)的返回值類型,這時(shí)需要提供它的外部函數(shù)柄和相應(yīng)的PL/SQL數(shù)據(jù)類型。

2.將外部函數(shù)和一個(gè)PL/SQL子程序相關(guān)聯(lián)

一個(gè)和外部函數(shù)建立關(guān)聯(lián)的PL/SQL子程序,實(shí)際上指明了外部函數(shù)的內(nèi)存地址,每次調(diào)用這個(gè)子程序,實(shí)際上是調(diào)用與它相對(duì)應(yīng)的外部函數(shù)。具體步驟為:

(1)用ORA_FFI.FIND_FUNCTION或ORA_FFI.REGISTER_FUNCTION得到一個(gè)函數(shù)柄。

(2)在PL/SQL包體的聲明部分,定義一個(gè)PL/SQL子程序,它的第一個(gè)參數(shù)是類型為ORA_FFI.FUNCHANDLETYPE,接下來是依次對(duì)應(yīng)外部函數(shù)參數(shù)的PL/SQL數(shù)據(jù)類型的參數(shù)。

(3)在這個(gè)PL/SQL子程序中加入一個(gè)PRAGMA接口。PRAGMA聲明就是通過將控制轉(zhuǎn)到一個(gè)內(nèi)存地址,來激活這個(gè)外部函數(shù)。

3.生成一個(gè)模仿外部函數(shù)的原型的PL/SQL子程序。

這個(gè)子程序就是用戶可見的外部函數(shù)的PL/SQL接口,用戶按照它的參數(shù)類型和返回值類型來使用外部函數(shù),具體步驟為:

(1)在包體的聲明部分,定義一個(gè)PL/SQL子程序,它的參數(shù)和返回值是和外部函數(shù)對(duì)應(yīng)的PL/SQL類型。這就是模仿外部函數(shù)原型的一個(gè)子程序。

(2)在這個(gè)子程序中調(diào)用與上步生成的與外部函數(shù)相關(guān)聯(lián)的PL/SQL子程序。

(3)在PL/SQL包的說明(PackageSpefication)部分,輸入這個(gè)PL/SQL子程序的原型。

下面是一個(gè)完整的為WindowsAPI函數(shù)winexec建立PL/SQL接口的例子:

PACKAGEWinExecIS

FUNCTIONWinExec(ExecfileINVARCHAR2,

commandINPLS_INTEGER)

RETURNPLS_INTEGER;

END;/*在包說明部分,是模仿外部

函數(shù)原型的PL/SQL函數(shù)原型說明*/

PACKAGEBODYWinExecIS

lh_USERora_ffi.libHandleType;/*定義庫柄類型變量*/

fh_WinExecora_ffi.funcHandleType;/*定義函數(shù)柄類型變量*/

FUNCTIONi_WinExec(funcHandleINora_ffi.funcHandleType,

ExecfileINOUTVARCHAR2,

commandINPLS_INTEGER)

RETURNPLS_INTEGER;

PRAGMAINTERFACE(C,i_WinExec,11265);

/*步驟2將一個(gè)PL/SQL子程序與外部函數(shù)相關(guān)聯(lián)*/

FUNCTIONWinExec(ExecfileINVARCHAR2,

commandINPLS_INTEGER)

RETURNPLS_INTEGER

IS

execfile_lVARCHAR2(512):=Execfile;

rcPLS_INTEGER;

BEGIN

rc:=i_WinExec(fh_WinExec,

execfile_l,

command);

RETURN(rc);

END;

/*步驟3中PL/SQL模仿函數(shù)的定義,

它實(shí)際上就是調(diào)用步驟2中與外部函數(shù)建立關(guān)聯(lián)的那個(gè)函數(shù)*/

BEGIN

BEGIN

lh_USER:=ora_ffi.find_library('Kernel32.dll');

EXCEPTIONWHENora_ffi.FFI_ERRORTHEN

lh_USER:=ora_ffi.load_library(NULL,'kernel32.dll');

END;/*得到動(dòng)態(tài)鏈接庫的庫柄*/

fh_WinExec:=ora_ffi.register_function

(lh_USER,'WinExec',ora_ffi.PASCAL_STD);

/*得到外部函數(shù)的函數(shù)柄*/

ora_ffi.register_parameter(fh_WinExec,

ORA_FFI.C_CHAR_PTR);/*參數(shù)注冊(cè),原類型為LPCSTR*/

ora_ffi.register_parameter(fh_WinExec,

ORA_FFI.C_INT);/*參數(shù)注冊(cè),原類型為UINT*/

ora_ffi.register_return(fh_WinExec,

ORA_FFI.C_INT);/*返回值注冊(cè),原類型為BOOL*/

ENDWinExec;

可以將多個(gè)外部函數(shù)的PL/SQL接口放在一個(gè)包內(nèi)。要在Developer/2000的FormDesigner中使用這些外部函數(shù),只要把包含這一程序包的程序庫(.PLL)附加進(jìn)來,使用包名.函數(shù)名就可激活這個(gè)外部函數(shù)。

例如:WinExec.WinExec('c:\windows\notepad.exe',0)

具體WindowsAPI函數(shù)數(shù)據(jù)類型和PL/SQL數(shù)據(jù)類型的轉(zhuǎn)換可參照Developer/2000中ProcedureBuilder幫助文件中對(duì)ORA_FFI軟件包的詳細(xì)介紹。

oracle ebs api怎么用

1.創(chuàng)建Product Family

Product Family用于管理幾個(gè)功能相近的Product(也可以立即為模塊),統(tǒng)一管理客戶化的Webservice接口

begin

-- Call the procedure

ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation = 'os_xxx',

x_pseudo_product_flag = 'N',

x_product_family_flag = 'Y',

x_application_short_name = NULL,

x_product_name = 'Oracle Xxx Suite',

x_product_family_abbreviation = NULL,

x_product_family_name = NULL,

x_aru_update_date = to_char(SYSDATE,'yyyy-mm-dd

hh24:mi:ss'),

x_currdate = to_char(SYSDATE,'yyyy-mm-dd

hh24:mi:ss'),

x_last_updated_by = -1,

x_created_by = -1);

COMMIT;

end;

2.注冊(cè)Product,即注冊(cè)Xxx University(cux)應(yīng)用到產(chǎn)品家族中

begin

ad_pa_insert_package.insert_ad_pm_product_info(x_product_abbreviation = 'cux',

x_pseudo_product_flag = 'N',

x_product_family_flag = 'N',

x_application_short_name = 'CUX',

x_product_name = 'Xxx University',

x_product_family_abbreviation = NULL,

x_product_family_name = NULL,

x_aru_update_date = to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),

x_currdate = to_char(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),

x_last_updated_by = -1,

x_created_by = -1);

COMMIT;

end;

3.關(guān)聯(lián)Xxx University應(yīng)用到產(chǎn)品家族Oracle Xxx Suite下

begin

-- Call the procedure

ad_pa_insert_package.insert_ad_pm_prod_family_map(x_product_abbreviation = 'cux',

x_product_family_abbreviation = 'os_xxx',

x_aru_update_date = TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),

x_currdate = TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss'),

x_last_updated_by = -1,

x_created_by = -1);

COMMIT;

end;

4.增加一個(gè)BUSINESS_ENTITY的lookup code(應(yīng)用開發(fā)員職責(zé)-應(yīng)用產(chǎn)品 - 代碼-Oracle Application Object),這個(gè)Lookup會(huì)用在下

一步的API中的@rep:category BUSINESS_ENTITY

這里增加的code為ORACLESEEKER

5.編寫PL/SQL API Specification

CREATE OR REPLACE PACKAGE CUX_SUPPLIER_PKG AS

/* $Header: $ */

/*#

* This package using maintain the supplier information

* @rep:scope public

* @reproduct CUX

* @rep:lifecycle active

* @rep:displayname Supplier Approve result

* @rep:compatibility S

* @rep:category BUSINESS_ENTITY ORACLESEEKER

*/

/*#

* insert approve result

* @param apply_id apply id

* @param node_id node id

* @param node_name node name

* @param approver_id approver id

* @param approver_name approver name

* @param approve_result approve result

* @param approve_opinion approve opinion

* @param approve_date approve date

* @return a varchar

* @rep:scope public

* @rep:lifecycle active

* @rep:displayname insert supplier approve result Webservice

*/

FUNCTION f_insert_approve_result(apply_id IN NUMBER,

node_id IN NUMBER,

node_name IN VARCHAR2,

approver_id IN NUMBER,

approver_name IN VARCHAR2,

approve_result IN NUMBER,

approve_opinion IN VARCHAR2,

approve_date IN DATE) RETURN VARCHAR2;

END CUX_SUPPLIER_PKG;

需要注意Package中的注釋并不是隨便填寫的,每一個(gè)注釋都會(huì)對(duì)應(yīng)到Oracle Integration Repositoy接口的說明上去,對(duì)于要注冊(cè)成

Webservice的PL/SQL API必須按照要求來填寫。

注釋標(biāo)簽具體的含義需要參考《Oracle E-Business Suite Integrated SOA Gateway Developer's Guide》

6.驗(yàn)證PLSQL接口文件,并生成ildt文件

將編寫好的PLSQL聲明定義保存為.pls文件(PAUL_ITEM_PKG.pls),并將其上傳到服務(wù)器應(yīng)用$CUX_TOP/patch/115/sql目錄下,然后執(zhí)行下

邊的命令生成ildt文件

/usr/bin/perl $FND_TOP/bin/irep_parser.pl -g -v -username=sysadmin

cuxatch/115/sql:CUX_SUPPLIER_PKG.pls:12.0=CUX_SUPPLIER_PKG.pls

7.將iLDT文件上傳到Oracle Integration Repositoy

FNDLOAD apps/apps 0 Y UPLOAD $FND_TOP/patch/115/import/wfirep.lct CUX_SUPPLIER_PKG_pls.ildt

8.在對(duì)應(yīng)的Product Family和Product下就能看到你的接口

9.在Web服務(wù)調(diào)用的時(shí)候,需要有一個(gè)應(yīng)用數(shù)據(jù)庫用戶來連接EBS數(shù)據(jù)庫,因此需要?jiǎng)?chuàng)建一個(gè)具備一定權(quán)限的用戶,而為了簡化設(shè)置的麻煩

,Oracle提供了一個(gè)內(nèi)建的用戶 ASADMIN ,只要啟用它并重置密碼就可以了。

以sysadmin登錄Oracle EBS,切換到 User Management 職責(zé),進(jìn)入U(xiǎn)sers頁面,查找出asadmin用戶,通過修改密碼的方式激活asadmin,

并確保此用戶擁有Apps Schema Connect Role職責(zé)。

由于asadmin的密碼已經(jīng)被重置,因此中間服務(wù)器的文件配置$INST_TOP/ora/10.1.3/j2ee/oafm/config/system-jazn-data.xml 中對(duì)應(yīng)的

密碼也需要修改,由于配置中的密碼已被加密,我們無法提供加密后的密碼,使用過OC4J的同事應(yīng)該都知道,Oracle提供了一種重置這里

密碼的方便方法,就是采用明文密碼,在密碼前添加一個(gè)警號(hào)(!),然后重啟應(yīng)用服務(wù)器后自動(dòng)會(huì)重新加密。打開system-jazn-data.xml

文件后, 找到

user

nameASADMIN/name

display-nameDefault Apps SOA User/display-name

descriptionUsed by SOAProvider for DB connection/description

credentials{903}qMgAeO1AjQjwOJ6rIB41Sx049uG0xzhs/credentials

/user

只要將credentials的值更改為自己的密碼,如我的密碼設(shè)置為11111,就設(shè)置為 credentials!11111/credentials。修改完成后重啟

oamf,簡單的方法就是重啟Oracle EBS應(yīng)用服務(wù)。

附重啟命令:

cd $INST_TOP/admin/scripts

01、關(guān)閉應(yīng)用 sh adstpall.sh apps/apps

02、重啟應(yīng)用 sh adstrtal.sh apps/apps

03、關(guān)閉DB

04、重啟DB

05、啟動(dòng)并發(fā)管理器 adcmctl.sh start apps/apps

10.為集成接口創(chuàng)建授權(quán)

發(fā)布到Oracle Integration Repositoy中的Web服務(wù)能夠被訪問必須有相應(yīng)的權(quán)限才可以,這也是受到AOL安全模型限制的一個(gè)體現(xiàn)。

登錄EBS后切換到Integrated SOA Gateway職責(zé),在 Integration Repositoy 中找出已經(jīng)上傳好的客戶化集成接口,選擇接口過程和方法

后點(diǎn)擊Create Grant 按鈕

選擇授權(quán)類型:All Users、Group of Users 和 Specific USer,下面設(shè)置為最后一種方式

11.完成以上工作后,點(diǎn)擊Generate WSDL按鈕來生成集成接口對(duì)應(yīng)的Web服務(wù)WSDL信息

成功完成后可以看到如下Web服務(wù)的狀態(tài)為:Generated

點(diǎn)擊 Deploy 按鈕來發(fā)布Web服務(wù)到中間服務(wù)器中,發(fā)布后Web服務(wù)的狀態(tài)為: Deployed

-----------------------------------------------

12.如果在測(cè)試中報(bào)java.security.PrivilegedActionException: javax.xml.soap.SOAPException: Message send failed: For input

string: ""

執(zhí)行以下操作:

cd $ORA_CONFIG_HOME/10.1.3/j2ee/forms/config/oc4j.properties

注釋代理服務(wù)

#http.proxyHost=

#http.proxyPort=

重啟服務(wù)

13.如果填寫信息提交后會(huì)報(bào)出 wsse:FailedAuthentication 這樣的錯(cuò)誤信息,這是由于提交的Soap消息中并沒有包括Oracle

Integration Repository要求的AOL安全認(rèn)證,即沒有Oracle EBS系統(tǒng)要求的用戶、職責(zé)、安全組和語言信息,也就是沒有進(jìn)行Oracle

EBS的環(huán)境初始化

wsdl文件路徑/ebsr12/test/inst/apps/TEST_scmdev/soa/PLSQL/4343

此問題可以通過修改wsdl文件來解決

01刪除CUX_SUPPLIER_PKG_soap.wsdl中

element name="SOAHeader"

complexType

sequence

element name="Responsibility" minOccurs="0" type="string"/

element name="RespApplication" minOccurs="0" type="string"/

element name="SecurityGroup" minOccurs="0" type="string"/

element name="NLSLanguage" minOccurs="0" type="string"/

element name="Org_Id" minOccurs="0" type="string"/

/sequence

/complexType

/element

02刪除CUX_SUPPLIER_PKG_soap_http.wsdl中

element name="SOAHeader"

complexType

sequence

element name="Responsibility" minOccurs="0" type="string"/

element name="RespApplication" minOccurs="0" type="string"/

element name="SecurityGroup" minOccurs="0" type="string"/

element name="NLSLanguage" minOccurs="0" type="string"/

element name="Org_Id" minOccurs="0" type="string"/

/sequence

/complexType

/element

修改后點(diǎn)擊invoke,如出現(xiàn)“處理服務(wù)時(shí)出錯(cuò)”,進(jìn)行如下處理

/ebsr12/test/inst/apps/TEST_scmdev/soa/PLSQL/4343/F_INSERT_APPROVE_RESULT.wsdl

查看這個(gè)文件的內(nèi)容

jcaperation

PackageName=”O(jiān)RACLESEEKER_DEPT_PKG”

ProcedureName=”ADD_DEPARTMENT”

IRepInternalName=”PLSQL:ORACLESEEKER_DEPT_PKG:ADD_DEPARTMENT”

IRepOverloadSeq=”1〃

InteractionSpec=”oracle.tip.adapter.apps.AppsStoredProcedureInteractionSpec”

/jcaperation

oci 連接 oracle

ORACLE調(diào)用接口(Oracle Call Interface簡稱OCI)提供了一組可對(duì)ORACLE數(shù)據(jù)庫進(jìn)行存取的接口子例程(函數(shù)),通過在第三代程序設(shè)計(jì)語言(如C語言)中進(jìn)行調(diào)用可達(dá)到存取ORACLE數(shù)據(jù)庫的目的。

在普通的情況下,用戶可以通過SQL和PL/SQL來訪問數(shù)據(jù)庫中的數(shù)據(jù)。ORACLE數(shù)據(jù)庫除了提供SQL和PL/SQL來訪問數(shù)據(jù)庫外,還提供了一個(gè)第三代程序設(shè)計(jì)語言的接口,用戶可以通過C、COBOL、FORTRAN等第三代語言來編程訪問數(shù)據(jù)庫。OCI就是為了實(shí)現(xiàn)高級(jí)語言訪問數(shù)據(jù)庫而提供的接口。OCI允許開發(fā)者在程序里使用SQL和PL/SQL來訪問數(shù)據(jù)庫。開發(fā)者可以使用第三代語言來編寫程序,而使用OCI來訪問數(shù)據(jù)庫。

oracle通過存儲(chǔ)過程調(diào)用web接口

sql語句

配置acl權(quán)限(oracle11及以上訪問網(wǎng)絡(luò),賬號(hào)需要acl權(quán)限)

java調(diào)用存儲(chǔ)過程,以及接受結(jié)果


分享文章:oracle怎么調(diào)用接口,oracle接口怎么做
網(wǎng)頁網(wǎng)址:http://weahome.cn/article/dssdgjh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部