Tag: oracle

oracle – 在oracle表中将多个以逗号分隔的值拆分为多行

我有一个Oracle分裂查询的问题。 虽然分裂逗号分隔数据到多个行使用连接通过和正则expression式在oracle查询我得到更多的重复行 。 例如,实际上我的表有150行,在这两个行中有逗号分隔的string,所以总的来说,我只得到155行,但我得到2000行。 如果我使用不同的工作正常,但我不想在查询结果重复的行。 我尝试了下面的查询,但它在查询结果中生成重复的行: WITH CTE AS (SELECT 'a,b,c,d,e' temp,1 slno FROM DUAL UNION SELECT 'f,g',2 from dual UNION SELECT 'h',3 FROM DUAL) SELECT TRIM(REGEXP_SUBSTR( TEMP, '[^,]+', 1, LEVEL)) ,SLNO FROM CTE CONNECT BY LEVEL <= LENGTH(REGEXP_REPLACE(temp, '[^,]+')) + 1 编辑 上面的select查询只能够分割一个逗号分隔的string ,但是当它在多行的表上执行时会产生重复的行 。 如何限制重复的行?

在oracle中使用sequence.nextval创build表

我使用以下查询创build了一个序列, create sequence qname_id_seq start with 1 increment by 1 nocache; 现在当我尝试创build一个使用上面的序列的表,它是抛出以下错误, Error report: SQL Error: ORA-00907: missing right parenthesis 00907. 00000 – "missing right parenthesis" 我用下面的查询来创build一个sequence.nextval表, CREATE TABLE qname ( qname_id integer NOT NULL default qname_id_seq.nextval PRIMARY KEY, qname VARCHAR2(4000) NOT NULL — CONSTRAINT qname_uk UNIQUE );

当没有结果返回时处理ExecuteScalar()

我正在使用以下SQL查询和ExecuteScalar()方法从Oracle数据库中获取数据: sql = "select username from usermst where userid=2" string getusername = command.ExecuteScalar(); 它向我显示了这个错误消息: System.NullReferenceException:未将对象引用设置为对象的实例 当userid=2的数据库表中没有行时,会发生此错误 我应该如何处理这种情况?

在Oracle中自动递增而不使用触发器

除了使用触发器之外,在oracle中实现自动增量的其他方法是什么?

Oracle jdbc驱动程序类之间的区别?

我使用的是Oracle的ojdbc5.jar并注意到它包含两个JDBC驱动程序类。 oracle.jdbc.driver.OracleDriver与oracle.jdbc.OracleDriver什么区别? 我应该在我的Java项目中使用哪一个?

null与Oracle中的空string

可能重复: 为什么Oracle 9i将空string视为NULL? 我在Oracle 10g中有一个名为TEMP_TABLE的表,只有两列 – id和description ,仅供参考。 列id是生成的NUMBER(35, 0) not null主键的序列,列DESCRIPTION是VARCHAR2(4000) not null 。 在这种情况下,基本的表结构将如下所示。 +————–+———–+—————+ |Name | Null? | Type | +————–+———–+—————+ |ID | NOT NULL | NUMBER(35) | |DESCRIPTION | NOT NULL | VARCHAR2(4000)| +————–+———–+—————+ 创build这个表后,我试着插入下面的INSERT命令。 INSERT INTO temp_table (id, description) VALUES (1, null); ->unsuccessful INSERT INTO temp_table (id, description) VALUES (2, […]

SQL(ORACLE):ORDER BY和LIMIT

我想要通过财产所有数据在我的数据库sorting,只有后使用LIMIT和OFFSET。 像这样的查询: SELECT select_list FROM table_expression [ ORDER BY … ] [ LIMIT { number | ALL } ] [ OFFSET number ] 我知道sorting结束,只要它findsorting结果的第一个row_count行。 在调用LIMIT和OFFSET之前,我可以对所有数据进行sorting吗?

在oracle中避免全局临时表的方法

我们只是将我们的sql服务器存储过程转换为oracle过程。 Sql Server SP的高度依赖于会话表( INSERT INTO #table1… ),这些表在oracle中被转换为全局临时表。 我们结束了对我们400 SP的500 GTT 现在我们发现在oracle中使用GTT是因为性能和其他问题而被认为是最后的select。 还有什么其他的select? collections? 游标? 我们对GTT的典型使用是这样的: 插入GTT INSERT INTO some_gtt_1 (column_a, column_b, column_c) (SELECT someA, someB, someC FROM TABLE_A WHERE condition_1 = 'YN756' AND type_cd = 'P' AND TO_NUMBER(TO_CHAR(m_date, 'MM')) = '12' AND (lname LIKE (v_LnameUpper || '%') OR lname LIKE (v_searchLnameLower || '%')) AND […]

Oracle:如何确定是否有待处理的事务?

我正在寻找一种方法来确定在当前会话中是否存在uncommited INSERT,UPDATE或DELETE语句。 一种方法是使用当前的sid来检查v $ lock,但这需要对v $ lock进行读取访问,如果DBA不想授予它,那么这是一个问题。 除了跟踪应用程序发出的所有数据库命令外,还有其他的方式吗?

在SQL Developer中打印一个variables的值

我想打印一个匿名块内的特定variables的值。 我正在使用Oracle SQL Developer。 我试过使用dbms_output.put_line 。 但它不工作。 我正在使用的代码如下所示。 SET SERVEROUTPUT ON DECLARE CTABLE USER_OBJECTS.OBJECT_NAME%TYPE; CCOLUMN ALL_TAB_COLS.COLUMN_NAME%TYPE; V_ALL_COLS VARCHAR2(500); CURSOR CURSOR_TABLE IS SELECT OBJECT_NAME FROM USER_OBJECTS WHERE OBJECT_TYPE='TABLE' AND OBJECT_NAME LIKE 'tb_prm_%'; CURSOR CURSOR_COLUMNS (V_TABLE_NAME IN VARCHAR2) IS SELECT COLUMN_NAME FROM ALL_TAB_COLS WHERE TABLE_NAME = V_TABLE_NAME; BEGIN OPEN CURSOR_TABLE; LOOP FETCH CURSOR_TABLE INTO CTABLE; EXIT WHEN […]