我继承了一个Oracle .dmp文件,我试图将其转换为CSV,以便我可以将其加载到MySQL中.
我正在使用的一般方法在这里描述.我遇到了一排问题.它的日期为5544-09-14,如下所示:
alter session set nls_date_format = 'dd-MON-yyyy';
select OID, REF, TRADING_DATE From LOAN WHERE REF = 'XXXX';
OID REF TRADING_DATE
--- -------------------- ------------
1523 XXXX 14-SEP-5544
Run Code Online (Sandbox Code Playgroud)
这是来自遗留系统的垃圾数据,它不验证输入日期.我想知道为什么我的PL/SQL函数导出这个值的数据扼流圈呢?
它使用TRADING_DATE值'0000-00-00T00:00:00'导出该行,我不知道为什么?
SELECT dump(TRADING_DATE) FROM LOAN WHERE REF = 'XXXX';
DUMP(TRADING_DATE)
--------------------------------------------------------------------------------
Typ=12 Len=7: 44,156,9,14,1,1,1
Run Code Online (Sandbox Code Playgroud)
和
SELECT to_char(trading_date, 'YYYYMMDDHH24MISS') FROM LOAN WHERE REF = 'XXXX';
TO_CHAR(TRADIN
--------------
00000000000000
Run Code Online (Sandbox Code Playgroud) 我正在尝试将a保存CLOB到变量中以执行提取等操作.我有这个代码:
DECLARE
clob_rec CLOB;
n_rec NUMBER:=100;
BEGIN
SELECT LOB INTO clob_rec FROM table1 WHERE ID = 1234;
n_rec := clob_rec.EXTRACT('//XPTO/text()', 'xmlns:XPTO').getNumVal();
END;
Run Code Online (Sandbox Code Playgroud)
我想保存多个值,XML如各种变量n_rec.如何获得"对象实例(CLOB)"来执行函数或方法extract()?
以下是查询
select *, "Price Range" =
CASE
WHEN ListPrice = 0 THEN 'Mfg item - not for resale'
WHEN ListPrice < 50 THEN 'Under $50'
WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
ELSE 'Over $1000'
END
FROM Production.Product
ORDER BY ProductNumber
Run Code Online (Sandbox Code Playgroud)
但是有SQL错误,在FROM之前缺少重要的单词.
case如果我想选择所有列,我们使用的蓝图是什么?
我遇到了严重的字符编码问题.给出一些背景知识:
AMERICAN,WE8ISO8859P1而Unix NLS_LANG 为AMERICAN_AMERICA.WE8ISO8859P1.在业务结束时:ÖZER ?N?AAT TAAHHÜT VE
在我们结束时:ÖZER ÝNÞAAT TAAHHÜT VE
如果您注意到土耳其字符?并且?正在转换为ISO 8859-1字符集.但是,所有设置(db和unix中的NLS参数)在两端都是相同的ISO8859-1(西欧)
通过一些研究,我可以理解 - 土耳其机器可以通过实时转换显示土耳其数据(DB NLS设置被本地NLS设置覆盖).
现在,我有一个在我的db中运行的接口 - 有一些PL/SQL脚本(通过shell脚本运行)从数据库中提取一些数据并将它们假脱机到unix路径上的.csv文件.然后通过MFT(托管文件传输)将.csv文件传输到外部系统.
问题是 - Exract永远不会有任何土耳其人的性格.每个土耳其人角色都会被转换成西欧角色,并且像这样对待外部系统,这被视为数据转换/丢失的情况,我的生意真的很不开心.
谁能告诉我 - 我怎么能保留所有土耳其人物?
PS:外部系统的字符集可以设置为ISP8859-9 charcterset.
提前谢谢了.
我有一个包含2列ID和URL的表,每个ID都有几个URL.我想每个ID只提取5个最大URL.我如何在Oracle SQL中执行此操作?
以下是我的代码,我不明白我做错了什么.任何帮助将不胜感激
CREATE OR REPLACE
PROCEDURE COMP_LATE_FEE(LATE_APT_FINE IN NUMBER, LATE_GRG_FINE IN NUMBER)
AS
DIFF NUMBER;
TYPE MBCUR IS REF CURSOR RETURN MONTHLY_BILL%ROWTYPE;
MONBILL MBCUR;
MBREC MONTHLY_BILL%ROWTYPE;
BEGIN
--DIFF := FLOOR(SYSDATE - (TRUNC(SYSDATE,'MM')));
--DBMS_OUTPUT.PUT_LINE(DIFF);
OPEN MONBILL FOR
-- checking the status of all last month's bills
SELECT * FROM MONTHLY_BILL
WHERE STATUS = 'PENDING' AND SYSDATE > ED_DT;
FETCH MONBILL INTO MBREC;
-- adding the late fee amount for any bills that are past the due date
-- due date = last …Run Code Online (Sandbox Code Playgroud) 我有这样的货币金额值;
22200000
Run Code Online (Sandbox Code Playgroud)
我想把这个号码转换成;
22,2 (Number format)
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我无法获得一块pl/sql代码.在我的程序的顶部,我从我的oracle apex应用程序中获取了一些关于复选框的数据.因为包含复选框的报表是动态生成的,所以我必须遍历
APEX_APPLICATION.G_F01
Run Code Online (Sandbox Code Playgroud)
列出并生成一个逗号分隔的字符串,如下所示
v_list VARCHAR2(255) := (1,3,5,9,10);
Run Code Online (Sandbox Code Playgroud)
我想稍后在该列表上查询并将v_list放在IN子句上,就像这样
SELECT * FROM users
WHERE user_id IN (v_list);
Run Code Online (Sandbox Code Playgroud)
这当然会引发错误.我的问题是我可以将v_list转换为什么,以便能够将它插入到pl/sql过程中的查询中的IN子句中?
我需要帮助.我在构建PL/SQL块时遇到问题.在游标中,我构建了一个查询,我想在游标上插入一个过滤器.以下是一个例子:
DECLARE
code NUMBER;
parameters_amb myOthertable%ROWTYPE;
CURSOR test is SELECT id from mytable
if parameters_amb.test2 is not null then
where mytable.name = 'NAMETABLE'
else
where mytable.name = 'NAMETABLE2';
Run Code Online (Sandbox Code Playgroud)
谁能协助我进行这种建设?
查询:
select o.candidateid
from onboardingcandidates o, candidatedetails c
where o.candidateid=c.candidateid
and o.JOININGSTATUS='0091'
and to_date(o.joiningdate)=to_date(sysdate+5);
Output:
cand1
cand2
cand3
cand62
Required Output:
cand1, cand2, cand3, cand62
Run Code Online (Sandbox Code Playgroud)