我创建了下一个程序和后续的Oracle JOB:
BEGIN
DBMS_SCHEDULER.create_program (program_name => 'myProg',
program_action => 'myProc',
program_type => 'STORED_PROCEDURE',
number_of_arguments => 3,
enabled => FALSE);
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (program_name => 'myProg',
argument_position => 1,
argument_type => 'NUMBER');
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (program_name => 'myProg',
argument_position => 2,
argument_type => 'NUMBER');
DBMS_SCHEDULER.DEFINE_PROGRAM_ARGUMENT (program_name => 'myProg',
argument_position => 3,
argument_type => 'NUMBER',
DEFAULT_VALUE => NULL);
DBMS_SCHEDULER.create_job ('myJob',
program_name => 'myProg',
enabled => FALSE,
comments => 'Send data');
DBMS_SCHEDULER.SET_ATTRIBUTE ('myJob', 'PARALLEL_INSTANCES', TRUE);
DBMS_SCHEDULER.SET_ATTRIBUTE ('myJob',
'logging_level',
DBMS_SCHEDULER.LOGGING_FULL);
END;
/
Run Code Online (Sandbox Code Playgroud)
现在,我有一个用户可以运行/执行调用下一个过程的作业:
PROCEDURE runJOB(param1 IN PLS_INTEGER,
param2 …
Run Code Online (Sandbox Code Playgroud) 我有一个解析XMLTYPE变量的函数,对于每个消息,为XMLTYPE变量中的每个标记附加一个具有特定结构的CLOB.像这样:
FUNCTION myFunc (px_Header IN VARCHAR2,
px_Block IN XMLTYPE,
pn_numLines OUT PLS_INTEGER)
RETURN CLOB
IS
lcl_return CLOB := EMPTY_CLOB;
BEGIN
pn_numLines := 0;
FOR item
IN ( SELECT RPAD (NVL (RECEIPTNUMBER, ' '), 20) AS RECEIPTNUMBER,
RPAD (NVL (COMPANYCODE, ' '), 3) AS COMPANYCODE,
RPAD (NVL (BRAND, ' '), 3) AS BRAND,
RPAD (NVL (POLICYNUMBER, ' '), 20) AS POLICYNUMBER,
RPAD (NVL (CLAIMNUMBER, ' '), 20) AS CLAIMNUMBER,
RECEIPTAMOUNT
AS receiptAmount
FROM XMLTABLE (
'INT_DATA/Item'
PASSING px_Block
COLUMNS RECEIPTNUMBER VARCHAR2 …
Run Code Online (Sandbox Code Playgroud) 我必须将SYSDATE
日期转换为特定的日期格式。该格式必须是这样的:'2016-11-23T15:12:48Z'
。我认为这是一种奇怪的日期格式,但是这是我的要求。
这必须是发送Web服务消息的日期。
在Oracle(12c或11g)中,我有一些功能可以转换这种特定格式的日期?谢谢。
我有这个复杂的SQL查询:
SELECT f1 (d1.prdecdde),
f2 (d1.prdecdde),
f3 (d1.prdecdde),
f4 (1, d1.prdecdde, d1.prdenpol),
d1.prdeisin,
f6 (d1.prdecdde, a.POLIRCTB),
NVL (a.poliagtb, a.poliagta),
d1.prdedtpr,
prdeticu
FROM ( SELECT prdecdde,
prdenpol,
prdeano,
SUM (NVL (prdeval, 0)) valantes,
NULL valdepois,
prdedtpr,
prdeticu,
prdeisin
FROM stat_pro_det
WHERE prdedprv = '20151101'
AND prdecdde IN (700,
100,
610,
600,
710,
900,
910)
AND prdeval > 0
GROUP BY prdecdde,
prdenpol,
prdeano,
prdedtpr,
prdeticu,
prdeisin
UNION ALL
SELECT prdecdde,
prdenpol,
prdeano,
NULL,
SUM (NVL (prdeval, 0)) valdepois,
prdedtpr,
prdeticu,
prdeisin …
Run Code Online (Sandbox Code Playgroud) 我有一个这样创建的表:
create table b (data timestamp, value XMLTYPE);
Run Code Online (Sandbox Code Playgroud)
我在TOAD 12.6中运行此脚本以将XML存储在表中。
DECLARE
lc_Soap CLOB;
lc_Request CLOB;
px_RequestXML XMLTYPE
:= XMLTYPE ('<test><test1>ABDDÇJJSõ</test1></test>');
BEGIN
DELETE b;
lc_Soap :=
'<?xml version="1.0" encoding="ISO-8859-1"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AxisValues xmlns="urn:/microsoft/multichannelframework/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="urn:/microsoft/multichannelframework/">
<User xmlns="">TEST</User>
</h:AxisValues>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<substr/>
</s:Body>
</s:Envelope>';
lc_Request :=
pkg_utils.replace_clob (lc_Soap,
'<substr/>',
xml_utils.XMLTypeToClob (px_RequestXML));
px_RequestXML := XMLTYPE.createXML (lc_Request);
INSERT INTO b
VALUES (SYSTIMESTAMP, px_RequestXML);
COMMIT;
END;
Run Code Online (Sandbox Code Playgroud)
当我尝试查看VALUE
列中的内容时,得到了这种编码UTF-8
<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AxisValues xmlns="urn:/microsoft/multichannelframework/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:h="urn:/microsoft/multichannelframework/"> …
Run Code Online (Sandbox Code Playgroud)