标签: oracle10g

如何手动卸载Oracle?

有时,我在Windows上的Oracle数据库会受到冲击.如何手动卸载Oracle?

database oracle uninstall oracle10g oracle9i

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

如何从返回引用游标的Oracle过程中获得格式良好的结果?

在MS SQL Server中,如果我想检查存储过程的结果,我可能会在Management Studio中执行以下操作.

--SQL SERVER WAY
exec sp_GetQuestions('OMG Ponies')
Run Code Online (Sandbox Code Playgroud)

结果窗格中的输出可能如下所示.

ID    Title                                             ViewCount   Votes 
----- ------------------------------------------------- ---------- --------
2165  Indexed View vs Indexes on Table                  491         2  
5068  SQL Server equivalent to Oracle’s NULLS FIRST     524         3 
1261  Benefits Of Using SQL Ordinal Position Notation?  377         2 

(3 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

无需编写循环或PRINT语句.

要在Oracle中执行相同的操作,我可能会在SQL Developer中执行以下匿名块

--ORACLE WAY
    DECLARE
        OUTPUT  MYPACKAGE.refcur_question;
        R_OUTPUT MYPACKAGE.r_question;
        USER    VARCHAR2(20);

BEGIN

  dbms_output.enable(10000000);
  USER:= 'OMG Ponies';
  recordCount := 0;



  MYPACKAGE.GETQUESTIONS(p_OUTPUT => OUTPUT, 
  p_USER=> USER, 

  ) ;




  DBMS_OUTPUT.PUT_LINE('ID | …
Run Code Online (Sandbox Code Playgroud)

oracle oracle10g oracle-sqldeveloper

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

Oracle中没有时间的日期类型

在Oracle 10g中,我DATE在表中使用type 时遇到了问题.我只是想要我的DATE田间商店,DATE没有时间自动.

有这么多的解决方案,我知道它就像使用TO_CHAR和/ TO_DATE或者TRUNC我面对的是我使用如此多的程序来插入或更新数据并且没有时间更新所有这些.

我怎么能解决这个问题?

oracle datetime date oracle10g

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

需要使用sql developer在oracle db上按日期计算记录和组计数

我有一张如下表

   ID                created    sent    type
-----------------------------------------------------
0001463583000051783  31-JUL-12  1   270
0081289563000051788  01-AUG-12  1   270
0081289563000051792  01-AUG-12  1   270
0081289563000051791  01-AUG-12  1   270
0081289563000051806  01-AUG-12  1   270
0001421999000051824  06-AUG-12  1   270
0001421999000051826  06-AUG-12  1   270
0001464485000051828  06-AUG-12  1   270
0082162128000051862  09-AUG-12  2   278
0082162128000051861  09-AUG-12  2   278
0022409222082910259  09-AUG-12  3   278
Run Code Online (Sandbox Code Playgroud)

我想要输出以下内容

created     Count
---------------------
31-JUL-12   1
01-AUG-12   4
06-AUG-12   3
09-AUG-12   3
Run Code Online (Sandbox Code Playgroud)

在Oracle 10g上使用SQL Developer实现这一目标有多难

我已经尝试了几个查询来生成这样一个表,最后它没有按日期对计数进行分组,当我们每天平均5000-10000个事务时,只给我一个'1'计数.我可能过于复杂了.但我想要一些简单的事情,我可以在日期范围内每天提取交易量.

当我运行查询时,目前发生的事情是

created     Count
---------------------
31-JUL-12   1
01-AUG-12   1
01-AUG-12   1
01-AUG-12   1
01-AUG-12   1 …
Run Code Online (Sandbox Code Playgroud)

oracle group-by count oracle10g oracle-sqldeveloper

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

(Oracle)使用分页查询时如何获得结果总数?

我正在使用Oracle 10g和以下范例来获取15个结果的页面(因此当用户查看搜索结果的第2页时,他们会看到记录16-30).

select * 
  from 
( select rownum rnum, a.*
    from (my_query) a
   where rownum <= 30 )
where rnum > 15;
Run Code Online (Sandbox Code Playgroud)

现在我必须运行一个单独的SQL语句来对"my_query"执行"select count"以获取my_query的结果总数(这样我就可以向用户显示它并使用它来弄清楚总页数等).

有没有办法获得结果的总数而不通过第二个查询,即从上面的查询中获取它?我已经尝试添加"max(rownum)",但它似乎不起作用(我得到一个错误[ORA-01747]似乎表明它不喜欢我在组中有关键字rownum).

我希望从原始查询中获取此信息而不是在单独的SQL语句中执行此操作的理由是"my_query"是一个昂贵的查询,所以我宁愿不运行它两次(一次得到计数,一次得到数据页面)如果我不需要; 但是,如果可能的话,我可以在单个查询中获得结果数量(同时获取我需要的数据页面)的任何解决方案都不应该增加很多额外的开销.请指教.

这正是我正在尝试做的事情,因为我认为它不喜欢我在组中使用ROWNUM,因此我收到了ORA-01747错误.注意,如果有另一种解决方案不使用max(ROWNUM),而是使用其他方法,那也完全没问题.这个解决方案是我第一次想到什么可行.

 SELECT * FROM (SELECT r.*, ROWNUM RNUM, max(ROWNUM)
 FROM (SELECT t0.ABC_SEQ_ID AS c0, t0.FIRST_NAME, t0.LAST_NAME, t1.SCORE
 FROM ABC t0, XYZ t1
 WHERE (t0.XYZ_ID = 751) AND 
 t0.XYZ_ID = t1.XYZ_ID 
 ORDER BY t0.RANK ASC) r WHERE ROWNUM <= 30 GROUP BY r.*, ROWNUM) WHERE RNUM > 15
Run Code Online (Sandbox Code Playgroud)

---------编辑--------注意,基于第一个评论,我尝试了以下似乎工作.我不知道它与其他解决方案相比表现如何(我正在寻找满足我的要求但表现最佳的解决方案).例如,当我运行它需要16秒.当我取出COUNT(*)OVER()RESULT_COUNT时,只需7秒钟:

    SELECT * FROM (SELECT r.*, …
Run Code Online (Sandbox Code Playgroud)

sql oracle oracle10g

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

如何在java中添加UTF-8 BOM

我有一个Java存储过程,它使用Resultset对象从表中获取记录并创建一个csv文件.

BLOB retBLOB = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);
retBLOB.open(BLOB.MODE_READWRITE);
OutputStream bOut = retBLOB.setBinaryStream(0L);
ZipOutputStream zipOut = new ZipOutputStream(bOut);
PrintStream out = new PrintStream(zipOut,false,"UTF-8");
out.write('\ufeff');
out.flush();
zipOut.putNextEntry(new ZipEntry("filename.csv"));
while (rs.next()){
    out.print("\"" + rs.getString(i) + "\"");
    out.print(",");
}
out.flush();
zipOut.closeEntry();
zipOut.close();
retBLOB.close();
return retBLOB;
Run Code Online (Sandbox Code Playgroud)

但生成的csv文件未显示正确的德语字符.Oracle数据库的NLS_CHARACTERSET值也为UTF8.

请建议.

java byte-order-mark character-encoding oracle10g

18
推荐指数
5
解决办法
6万
查看次数

当唯一索引出现时,Oracle 10g和11g之间REF CURSOR的行为不同?

描述

我有一个Oracle存储过程,它已在本地开发实例和运行Oracle 8,然后是9,然后是10和最近11的多个客户端测试和生产实例上运行了大约7年.它一直工作直到升级到Oracle 11g.基本上,该过程打开引用游标,更新表然后完成.在10g中,光标将包含预期的结果,但在11g中,光标将为空.升级到11g后没有更改DML或DDL.这种行为在我尝试过的每10g或11g实例上都是一致的(10.2.0.3,10.2.0.4,11.1.0.7,11.2.0.1 - 所有在Windows上运行).

具体的代码要复杂得多,但要用一些现实的概述来解释这个问题:我在头表中有一些数据,还有一堆子表将输出到PDF.头表有一个布尔值(NUMBER(1),其中0表示false,1表示为真)列表示该数据是否已被处理.

视图仅限于显示尚未处理的行(视图还连接到其他一些表,进行一些内联​​查询和函数调用等).因此,在打开游标时,视图显示一行或多行,然后在游标打开后运行update语句以翻转头表中的标志,发出提交,然后过程完成.

在10g上,游标打开,它包含行,然后update语句翻转标志并再次运行该过程将不产生任何数据.

在11g上,游标永远不会包含该行,就好像在更新语句运行之后光标才会打开.

我担心可能会影响其他程序和其他应用程序的11g(希望是可配置的设置)中的某些内容可能已发生变化.我想知道的是,是否有人知道为什么两个数据库版本之间的行为不同,以及是否可以在没有代码更改的情况下解决问题.

更新1:我设法将问题跟踪到一个独特的约束.似乎当11g中存在唯一约束时,无论我是否针对实际对象运行真实世界代码或以下简单示例,该问题在100%的时间内都是可再现的.

更新2:我能够从等式中完全消除视图.我已经更新了简单的示例,以便即使在直接查询表时也存在问题.

简单的例子

CREATE TABLE tbl1
(
  col1  VARCHAR2(10),
  col2  NUMBER(1)
);

INSERT INTO tbl1 (col1, col2) VALUES ('TEST1', 0);

/* View is no longer required to demonstrate the problem
CREATE OR REPLACE VIEW vw1 (col1, col2) 
AS 
SELECT col1, col2 
  FROM tbl1 
 WHERE col2 = 0;
*/

CREATE OR REPLACE PACKAGE pkg1
AS
   TYPE refWEB_CURSOR IS REF CURSOR;

   PROCEDURE proc1 (crs  OUT  refWEB_CURSOR);

END …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures oracle10g oracle11g

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

oracle中序列中MAXVALUE的最大值是多少?

你能告诉我MAXVALUE序列中的最大值/最小值是MINVALUE多少,序列中的最小值/最大值是多少?

sql oracle sequence oracle10g

18
推荐指数
3
解决办法
4万
查看次数

更改Oracle中列的数据类型

我创建了下表

CREATE TABLE PLACE(
  POSTCODE VARCHAR(10) PRIMARY KEY,
  STREET_NAME VARCHAR(10),
  COUNTY VARCHAR(10),
  CITY VARCHAR(10));  
Run Code Online (Sandbox Code Playgroud)

我想改变name,countycityvarchar(10)varchar(20).我怎么做?

oracle oracle10g oracle11g

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

当"其他人提升"做某事时是否有例外?

作为PL/SQL中的新手,我一直在复制并粘贴以下触发器:

CREATE OR REPLACE TRIGGER FOO_TRG1
    BEFORE INSERT
    ON FOO
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
BEGIN
    IF :NEW.FOO_ID IS NULL THEN
        SELECT FOO_SEQ1.NEXTVAL INTO :NEW.FOO_ID FROM DUAL;
    END IF;

    EXCEPTION
        WHEN OTHERS THEN RAISE;
END FOO_TRG1;
/
ALTER TRIGGER FOO_TRG1 ENABLE;
Run Code Online (Sandbox Code Playgroud)

我怀疑所包含的异常处理代码什么都不做,可能只是被删除,因为如果出现问题,我会收到一条错误消息.我对吗?

(我猜这样的代码是进一步编辑先前代码的结果.)

oracle plsql oracle10g

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