标签: oracle10g

如何解决ORA 00936缺少表达式错误?

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表不包含任何数据.

oracle oracle10g ora-00936

13
推荐指数
1
解决办法
14万
查看次数

连接中断后如何自动重新连接Oracle连接池?

我正在通过OracleConnectionCacheImpl运行Oracle连接池的问题.当我通过瘦驱动程序连接到我的数据库服务器(Oracle 10g)上的连接池时,一切正常,直到一个未指定的时间,数据库连接被丢弃(可能是由于空闲连接?),我收到一条错误消息:

封闭连接.

刷新页面并重新尝试连接会重新连接数据库,因此它似乎不是网络或数据库的问题.如果池中的连接因任何原因死亡,Oracle连接池是否可以验证其连接并重新连接?

我正在使用Apache Tomcat 6.0.18,Java EE6更新11.

(在Oracle瘦驱动程序中似乎有ping功能.这有帮助,我在哪里可以找到它?)

database-connection connection-pooling jdbc oracle10g

12
推荐指数
1
解决办法
1万
查看次数

使用timezone将Oracle DATE列迁移到TIMESTAMP

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进一步使事情变得复杂的触发器.带有时区的时间戳减轻了很多这种痛苦.

哦,谢谢你到目前为止的答案.

sql oracle timestamp date oracle10g

12
推荐指数
2
解决办法
4万
查看次数

如何查询Oracle目录的权限?

我在all_directories中有一个目录,但我需要找出与之关联的权限,即已授予哪些权限?

oracle directory metadata oracle10g

12
推荐指数
2
解决办法
10万
查看次数

意外查询成功

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 …

sql oracle oracle10g

12
推荐指数
2
解决办法
318
查看次数

在pl/sql中打印变量

我有以下代码:

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

plsql oracle10g

12
推荐指数
2
解决办法
6万
查看次数

连接Oracle中的SQL查询的结果

我在表格中有这样的数据

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.

sql oracle concatenation oracle10g

12
推荐指数
2
解决办法
3万
查看次数

Oracle中的EXCEPT关键字

我正在尝试在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)

sql oracle10g sql-except

12
推荐指数
1
解决办法
5万
查看次数

如何在Oracle中实现条件更新?

我是oracle的新手,并且遇到了我的一个SQL查询问题.

有2个用户:User1User2:

     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)

我真的不知道该怎么做,并希望得到一些帮助.有什么想法吗?

oracle oracle10g

11
推荐指数
1
解决办法
4023
查看次数

如何加速Oracle中的row_number?

我有一个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工具?

sql oracle row-number oracle10g

11
推荐指数
2
解决办法
2万
查看次数