我的问题是我有一个数据库列让我们调用x.
x值为0,1,2,3.在我的java应用程序中,每个数字都有自己的值:
0 - expire
1 - approval
2 - pending
3 - counting
Run Code Online (Sandbox Code Playgroud)
我需要做的是从数据库记录中选择与它们相关的字符串值
所以如果上面的选择结果将是:
1 - approval ,
3 - counting,
0 - expire
2 - pending.
Run Code Online (Sandbox Code Playgroud)
我必须补充说java中的排序是不可能的,所以我需要在plsql站点中对记录进行排序.
任何人都可以帮我如何执行这种查询,
先感谢您
我们一直在研究一些遗留代码,并找到了检查日期(VARCHAR2)是否以正确格式'YYYY-MM-DD HH24:MI:SS'传递的函数.它使用简单的构造
function IS_CORRECT_TIMESTAMP(P_EVENT_TIMESTAMP varchar2)
return number is
V_TIMESTAMP timestamp;
begin
select TO_TIMESTAMP(NVL(P_EVENT_TIMESTAMP, '1'),
'YYYY-MM-DD HH24:MI:SS')
into V_TIMESTAMP
from DUAL;
return 1;
exception
when others then
return - 1;
end;
Run Code Online (Sandbox Code Playgroud)
问题是,当我传递值例如'22 -AUG-13'时,它不会抛出任何异常.这可能是什么原因?
谢谢你的想法.
我host()在oracle程序中使用命令时遇到问题.我编写了非常简单的oracle代码.
CREATE OR REPLACE PROCEDURE
run_command(command_i IN VARCHAR2)
IS
l_message VARCHAR2 (100);
BEGIN
l_message := 'cmd ' || command_i;
host(l_message);
END run_command;
Run Code Online (Sandbox Code Playgroud)
何时host(l_message);被淘汰工作正常.
问题是什么,无论如何要创建一个使用的例程host()?
有一个叫做的表TableA和另一个叫做的表TableB
我需要复制的列值ValueC表中TableB的列ValueD在表中TableA.两个表共享一个公共列:Table_id
我试过用:
DECLARE
CURSOR c_App
IS
SELECT *
from TableA
BEGIN
for i in c_App
LOOP
select ValueD from TableB where Table_id = c_App.Table_id;
END LOOP;
update TableA set ValueC = ValueD where Table_id = c_App.Table_id
END;
Run Code Online (Sandbox Code Playgroud)
但是,我在SQL开发人员中遇到错误:
Run Code Online (Sandbox Code Playgroud)PLS-00103: Encountered the symbol "END" when expecting one of the following: begin function package pragma procedure subtype type use <an identifier> <a double-quoted delimited-identifier> form current cursor 06550. 00000 …
我有一个存储的PL/SQL过程,每10分钟启动一次(预定的工作).有时我的程序执行超过10分钟.在这种情况下,Oracle调度程序与第一个实例并行运行我的过程的另一个实例.如何在第一个过程完成之前阻止Oracle启动新过程?
我要求在pl/sql中对字符串进行标记,并仅返回唯一的标记.我已经看到了将字符串标记化的示例,但没有一个会返回唯一的标记.
例如查询 -
select tokenize('hi you person person', ' ') as col1 from dual;
Run Code Online (Sandbox Code Playgroud)
应该回来 TOKEN_LIST('hi','you','person')
代替 TOKEN_LIST('hi','you','person','person')
我想用来HEXTORAW()从ASCII十六进制代码“ 30”中获取char值。ASCII HEX 30应该返回varchar'0'。
怎么做到的?是HEXTORAW()正确的功能吗?
我有很多现有的表,每个表都有一个名为'id'的列.此列具有从1开始的整数值.例如,表MY_TABLE包含3条记录,其中ID为1,2和3(超级基本).
我想为每个表创建一个序列,并使用表的最大id设置其起始值.在我的例子中,我需要这样的东西:
CREATE SEQUENCE MY_TABLE_SEQ START WITH 3 INCREMENT BY 1;
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西,但它不起作用:
CREATE SEQUENCE MY_TABLE_SEQ START WITH (SELECT NVL(MAX(id),1) FROM MY_TABLE) INCREMENT BY 1;
Run Code Online (Sandbox Code Playgroud)
知道我可以做什么吗?
谢谢
我正在使用外部表来从文件加载数据.这个数据有很多需要经过的处理,外部表是动态创建的,所以数据应该被加载到外部表中,然后进入全局临时表,然后删除外部表并进行处理继续临时表中的数据.临时表的结构与外部表的结构相匹配.
删除外部表正在清除全局临时表.
这一切都发生在同一个过程中,所以我不认为这是一个会话问题.
proc看起来像这样:
create or replace
PROCEDURE Upload_Data_File
(
filename IN varchar2
)
IS
can_create_table char(1) := 'Y';
ext_table_name varchar2(200) := filename;
sql_to_run varchar(5000) := '';
BEGIN
/*****************************************************************************
Create external table/load file data
*****************************************************************************/
BEGIN
ext_table_name := replace(ext_table_name, '.', '_');
ext_table_name := 'ext_' || ext_table_name;
sql_to_run := 'CREATE TABLE ' || ext_table_name || '
(
ROW1 CHAR(1 BYTE),
ROW2 CHAR(1 BYTE),
RECORD_TEXT VARCHAR2(200 BYTE),
RECORD_NUMBER NUMBER
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY FILE_DIRECTORY
ACCESS PARAMETERS
(
RECORDS …Run Code Online (Sandbox Code Playgroud) 我有下面的代码to_date('1311313', 'yymmdd')实际上抛出异常说invalid month.哪个可以管理
exception
when others then
sop('date format is wrong');
Run Code Online (Sandbox Code Playgroud)
这里的问题是一切都会被捕获,我不想做,好像会发生其他错误,然后它也会传递消息date format is wrong.我也不想创建用户定义的异常.只是想知道哪个异常正在被抛出,以便我可以在我的代码中使用,如下所示
exception
when name_of_exception then
sop('date format is wrong');
Run Code Online (Sandbox Code Playgroud)