Select /*+USE_HASH( a b ) */ to_char(date, 'MM/DD/YYYY HH24:MI:SS') as LABEL,
ltrim(rtrim(substr(oled, 9, 16))) as VALUE,
from rrfh a, rrf b,
where ltrim(rtrim(substr(oled, 1, 9))) = 'stata kish'
and a.xyz = b.xyz
Run Code Online (Sandbox Code Playgroud)
以上查询的"from"(第3行)部分给了我ORA-00936 Missing EXPRESSION error.请帮我
注意 :: rrfh表不包含任何数据.
我正在通过OracleConnectionCacheImpl运行Oracle连接池的问题.当我通过瘦驱动程序连接到我的数据库服务器(Oracle 10g)上的连接池时,一切正常,直到一个未指定的时间,数据库连接被丢弃(可能是由于空闲连接?),我收到一条错误消息:
封闭连接.
刷新页面并重新尝试连接会重新连接数据库,因此它似乎不是网络或数据库的问题.如果池中的连接因任何原因死亡,Oracle连接池是否可以验证其连接并重新连接?
我正在使用Apache Tomcat 6.0.18,Java EE6更新11.
(在Oracle瘦驱动程序中似乎有ping功能.这有帮助,我在哪里可以找到它?)
Bakground:我有一个我正在研究的遗留应用程序,它使用DATE类型在数据库中进行大部分时间存储.我想尝试更新其中一些表,以便他们可以利用时区,因为这会导致db所在的不同区域的用户出现问题(参见下面的A).这适用于Oracle 10g.
Quetions:
1)我可以"就地"迁移这个.我可以像这样转换
DATE_COL = type:DATE => DATE_COL = type:TIMESTAMP
Run Code Online (Sandbox Code Playgroud)
...或者我必须使用不同的列名吗?
请记住,需要保留数据.如果这可以在迁移脚本中轻松完成,那么它将适用于我的目的.
2)这种类型的转换是否会向后兼容?我们可能会有一些脚本或报告会出现在我们可能不知道的表中.我们可以处理它,但我想知道我正在走进什么样的大黄蜂窝.
3)我应该注意哪些陷阱?
谢谢,
编辑:(
部分回应加里)
我很好,有一个多步骤的过程.
1)使用某种转换将数据移动到新的Timestamp列(caled TEMP)2)删除旧列(我们称之为MY_DATE)3)使用旧日期列名称(MY_DATE)创建新的timestamp列4)移动数据到MY_DATE列5)删除TEMP列
一个加里还希望了解具体的时区的问题予以澄清.我从下面复制了我的答案,以使其更具可读性.
基本上,数据将从几个不同的区域访问.我们需要能够根据需要转换为本地时区/从本地时区转换.我们还有使用sysdate进一步使事情变得复杂的触发器.带有时区的时间戳减轻了很多这种痛苦.
哦,谢谢你到目前为止的答案.
我在all_directories中有一个目录,但我需要找出与之关联的权限,即已授予哪些权限?
SELECT COUNT (*)
FROM rps2_workflow
WHERE workflow_added > TO_DATE ('01.09.2011', 'dd.mm.yyyy')
AND workflow_finished < TO_DATE ('wtf', 'dd.mm.yyyy')
AND workflow_status IN (7, 12, 17)
AND workflow_worker = 159
Run Code Online (Sandbox Code Playgroud)
我希望此查询失败,因为日期无效,但它返回0
此查询的计划显示,在8步无效条款的处理:
8 TABLE ACCESS BY INDEX ROWID TABLE RPS2.RPS2_WORKFLOW Object Instance: 1 Filter Predicates: ("WORKFLOW_STATUS"=7 OR "WORKFLOW_STATUS"=12 OR "WORKFLOW_STATUS"=17) AND SYS_EXTRACT_UTC("WORKFLOW_FINISHED")<SYS_EXTRACT_UTC(TO_DATE('wtf','dd.mm.yyyy')) Cost: 11 Bytes: 33 Cardinality: 1 CPU Cost: 8 M IO Cost: 10 Time: 1
Run Code Online (Sandbox Code Playgroud)
如果我们评论出AND workflow_status IN (7, 12, 17)条件 - 那么我们预计会得到ORA-01858: a non-numeric character …
我有以下代码:
DECLARE
v_hire_date DATE:='30-Oct-2000';
v_six_years BOOLEAN;
BEGIN
IF MONTHS_BETWEEN(SYSDATE,v_fecha_contrato)/12 > 6 THEN
v_six_years:=TRUE;
ELSE
v_six_years:=FALSE;
END IF;
DBMS_OUTPUT.PUT_LINE('flag '||v_six_years);
END;
Run Code Online (Sandbox Code Playgroud)
我想打印变量的值v_six_years,但我收到错误:
ORA-06550: line 10, column 24:
PLS-00306: wrong number or types of arguments in call to '||'
ORA-06550: line 10, column 3
Run Code Online (Sandbox Code Playgroud)
如何打印变量的值v_six_years?
我在表格中有这样的数据
NAME PRICE
A 2
B 3
C 5
D 9
E 5
Run Code Online (Sandbox Code Playgroud)
我想在一行中显示所有值; 例如:
A,2|B,3|C,5|D,9|E,5|
Run Code Online (Sandbox Code Playgroud)
我将如何进行查询,在Oracle中为我提供这样的字符串?我不需要把它编程成某种东西; 我只想要一种方法让这条线出现在结果中,这样我就可以复制它并将其粘贴到word文档中.
我的Oracle版本是10.2.0.5.
我正在尝试在Oracle 10.1.0.2.0中使用EXCEPT关键字,但不断收到错误"未知命令".我试过谷歌搜索,有人说关键字是MINUS,所以我使用MINUS,但我仍然有同样的错误.任何的想法?谢谢.
所以这是我的查询.我找到了参加所有课程编号> 500的学生的名字
SELECT s.name
FROM Students s
WHERE NOT EXISTS
(
SELECT c.id
FROM Courses c
WHERE c.number > 500
MINUS
SELECT e.course_id
FROM Enrollment e
WHERE e.student_id = s.id
);
Run Code Online (Sandbox Code Playgroud) 我是oracle的新手,并且遇到了我的一个SQL查询问题.
有2个用户:User1和User2:
Tab1 Tab2
-------- --------
EmpNo EmpNo
EmpName EmpName
ContactNo Salary
Location
User2具有User1.Tab1中的所有权限,并且两个表之间没有外键关系.
我想在tab2" NameDesignation"中添加一列,并且我想在检查以下条件后在此列中插入值:
WHEN User1.Tab1.EmpNo = User2.Tab2.EmpNo THEN
INSERT INTO Tab2 VALUES (&designation)
Run Code Online (Sandbox Code Playgroud)
我真的不知道该怎么做,并希望得到一些帮助.有什么想法吗?
我有一个SQL查询,看起来像这样:
SELECT * FROM(
SELECT
...,
row_number() OVER(ORDER BY ID) rn
FROM
...
) WHERE rn between :start and :end
Run Code Online (Sandbox Code Playgroud)
从本质上讲,正是ORDER BY部分减慢了速度.如果我要删除它,EXPLAIN成本会下降一个数量级(超过1000倍).我试过这个:
SELECT
...
FROM
...
WHERE
rownum between :start and :end
Run Code Online (Sandbox Code Playgroud)
但这并没有给出正确的结果.有没有简单的方法来加快速度?或者我是否需要花更多时间使用EXPLAIN工具?