在Oracle的Select语句中使用Case返回多个列

我有一个sceanrio,需要根据主select语句中的条件从不同的子查询中检索值。我试图使用Case,但问题是Case不支持多列。有没有解决这个问题的办法,或者有没有其他方法来解决这个问题 简化查询中的场景 select col1,col2, case when col3='E01089001' then (select 1,3 from dual) else (select 2,4 from dual) end from Table1 where c

Oracle 固定表中许多项目组的编号

我有一个包含这些列的表 create table demo ( ID integer not null, INDEX integer not null, DATA varchar2(10) ) 示例数据: ID INDEX DATA 1 1 A 1 3 B 2 1 C 2 1 D 2 5 E 我想: ID INDEX DATA 1 1 A 1 2 B -- 3

Oracle中数字格式的最大值是多少?

我想知道数字格式的最大值是多少? 例如,int32可以处理4.294.967.296值。基于: 数字数据类型存储固定和浮点数。数字 几乎可以存储任何大小的数据,并保证可随身携带 在操作Oracle的不同系统中,最多有38位 精确性 以下数字可以存储在数字列中: 1 x 10-130到9.99..9 x 10125范围内的正数,最多38个有效数字 从-1 x 10-130到9.99..99 x的负数 10125,最多包含38个有效数字 零 正无穷大和负无穷大(仅通过从Oracle版本5数据库导入

是否存在与mysqldump相当的Oracle

是否有方法将oracle表的内容转储到格式为INSERT语句的文件中。我不能使用oradump,因为它在GPL上。我将从perl CGI脚本运行它。我正在寻找使用单个命令直接从oracle server转储数据的方法。使用perl运行select并创建insert语句速度太慢,因为会有大量数据 我知道我可能可以使用spool命令和服务器端的plsql块来实现这一点。但是,是否有一个内置命令来执行此操作,而不是自己格式化INSERT语句?生成大量INSERT语句可能会很慢,无论您如何操作,而且执行

如何在Oracle中使用范围内的随机值更新表列?

我有一个包含3列的表: -主键 -金额 -RAND\u金额(全部为空) 我希望用以下公式填充RAND\u AMOUNTS列: AMOUNT*(0-100 random value)/100 例如,假设金额行为10,为该行生成的随机值为10,则RAND\u amount应为10*10/100=$1是您要查找的: UPDATE the_table SET rand_amount = (amount * dbms_random.value(0, 100) ) / 100 WHERE amoun

使用Oracle查找任意日期范围内的行数

我需要回答的问题是“我们在60分钟内收到的最大页面请求数是多少?” 我有一张类似于此的桌子: date_page_requested date; page varchar(80); 我在寻找任何60分钟时间片中的最大行数 我原以为解析函数可以让我达到目的,但到目前为止我还是一片空白 我希望有一个指向正确方向的指针。这应该能满足您的需要,返回的第一行应该有 页数最多的小时 select number_of_pages ,hour_re

具有Windows身份验证的Oracle连接字符串

我们需要让我们的产品在Oracle和SQL Server(它们最初是围绕SQL Server构建的)上工作。不幸的是,我们没有任何内部Oracle开发经验可言,但作为一名高级开发人员,领导该项目的责任落在了我身上。到目前为止,我已通过使用以下连接字符串使我们的应用程序连接到Oracle数据库(我使用的是Oracle XE 11.2): Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=VS010-ORA11GR1)(PORT=1523))

使用rman备份oracle数据库时出错

这就是我在不登录oracle 10g数据库的情况下尝试备份数据库的方式。有人能告诉我为什么会出现此错误,以及我应该如何尝试解决它吗 Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\sunanda>cd C:\oraclexe C:\oraclexe>cd app C:\oraclexe\app>cd oracl

Oracle意外删除

我在Oracle10g上意外删除了许多表的记录,而且我没有备份,没有Archevelog模式,也没有打开闪回。 是否可以恢复数据?如果是,我该怎么做?您多久前删除了数据?例如,如果您在不到一小时前删除了数据,是否可以运行此查询并查看数据是否仍处于撤消状态 SELECT * FROM some_table AS OF TIMESTAMP systimestamp - INTERVAL '1' hour 你多久前删除了这些数据?例如,如果您在不到一小时前删除了数据,是否可以运行此查询并查看数据

创建只能从表空间(oracle)查询数据的用户

我的oracle数据库中有3个用户 用户管理 用户 用户查询 用户_admin具有dba rol 用户拥有连接和资源rol 和用户查询与用户查询相同 我想将最后一个配置为拒绝他进行所有类型的插入、更新、删除,但不从表、视图或过程中形成完整的表空间 关键是要有一个只用于查询数据的安全用户 但至少据我所知,我不能在表空间中这样做 有什么想法吗?有以下选项可以将select授予任何表或视图(SYS拥有的除外): 但它并不局限于一个表空间-整个数据库中的任何表都可以用于select。下面的命令将se

为什么Grails使用H2而不是Oracle?

我花了很多时间来解决这个问题。我是GRAILS和GROOVY的begginer。 我有一个名为“tms_dev”的旧oracle数据库模式。此架构有一些表(例如checktypes表)。我还有由GRAILS生成的域类Checktype和ChecktypesController类-controller 此类具有列表方法: def列表(最大整数){ } 我还将Datasource.groovy文件配置为与oracle一起使用这些内容 dataSource { pooled = true

无法使用Oracle 11g执行简单插入

我正在尝试将Sybase server中的表中的数据复制到Oracle server Oracle 11g中的同一个表中。 我认为使用我的coldfusion web编程会更容易,因为2个不同的db服务器。 不幸的是,我从Oracle得到了以下错误。我认为我的语法没有错。因为所有的逗号都在那里,正如错误所说,没有丢失的逗号。我认为这可能是因为日期列被设置为日期数据类型 以下是错误: Error Executing Database Query. [Macromedia][Oracle JDB

Oracle 从周数中获取一周的第一天

在Oracle中,有没有一种简单的方法可以让一周的第一天有一个周数 例如,今天的日期是2012年4月12日。如果我跑步: 从dual中选择“WW”以显示charsysdate; 它返回49作为周数 我想做的是以某种方式返回2012年2月12日的第一天…假设第49周的第一天为周日 有什么想法吗?提前感谢您的帮助 使用trunc函数@Justin used,我想这就是你想要的: select trunc(to_date('2012-01-01', 'YYYY-MM-DD') + (49 - 1) *

Oracle 使用EF 5.0以多对多方式返回缺少记录的对象

根据下面的模式,我试图构建一个EF查询,返回缺少所需表单的联系人。每个联系人都有一个与FormType集合相关的ContactType。每个联系人必须至少有一个与其联系人类型相关的表单类型(在ContactForm中) EF从下面的linq查询生成的查询适用于Sql Server,但不适用于Oracle var query = ctx.Contacts.Where (c => c.ContactType.FormTypes.Select (ft => ft.FormTypeID)

Oracle-PLS-00103:触发器-文件结束错误

我创建了上述触发器,但它给了我错误: PLS-00103:在预期以下情况时遇到符号“文件结束”:;符号“;”已替换为“文件结束”以继续 触发代码: CREATE OR REPLACE TRIGGER subView_insert_tr INSTEAD OF INSERT ON VSubscriber DECLARE lendings Lending_tab ; i INTEGER ; copy_book_var Copy_li

如何设置Oracle以区分大小写处理对象名称?

我知道我可以使用双引号强制使用区分大小写的对象名称,但我希望避免使用它。我想知道是否有一个数据库选项可以设置为使Oracle在不使用双引号的情况下以区分大小写的方式处理对象名。谢谢 没有这样的选择。如果您想强制所有内容都区分大小写(我强烈质疑这是否明智),那么您需要在代码中使用双引号标识符

分数等价性Oracle Text/Lucene

Oracle文本分数与Lucene分数之间是否存在等价性? 您是否能够通过分数混合源以获得一个统一的结果集?在Lucene中的查询或数据更改之间,分数是不可比的,更不用说与其他技术相比了。通过在索引中添加或删除其他文档,可以显著更改同一文档的Lucene分数。按最大值的百分比计分是显而易见的解决方案,但同样的问题仍然存在,另外一种技术中的其他算法可能会呈现不同的分布。你可以读到为什么你不应该像这样比较分数 我设法将类似的东西捆绑在一起的一种方法是从另一个数据源获取匹配项,并在中创建一个临时索引,

Oracle 10g过程不执行并行

我有一个程序,应该一次执行一个。我的意思是当程序正在执行时,其他进程/用户不应该能够执行相同的程序 只有在程序执行之后,以及下一次可以执行时 请帮助序列化一个过程的执行,您可以使用dbms\u lock包,特别是allocate\u unique()、release()过程和该包的request()函数。下面是一个示例,其中我们创建了一个包,用于规范锁获取过程: 包装规格 create or replace package proc_lock as function request_lock

oracle选择按文件内容筛选

我正面临一个问题,我想是因为缺少知识 如何在ORACLE数据库上执行以下查询: Select toto from my_table where value in (my_value.txt); my_value.txt是一个文本文件,类似于: '1111','2222','123123','12323',... etc... 感谢您的支持我想您可能需要为此创建一个外部表。您可以基于基础文件内容创建一个表,然后查询该表。我建议你读一读: 如果您搜索“使用外部表加载csv文件”,您应该可以在网

oracle流程中的本地=否是什么

我试图使用top命令找出在Unix机箱上消耗更多内存的进程: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 23421 test 18 0 6408m 2.8g 2.8g D 0.0 23.7 1:03.63 xyz 11874 test 15 0 6378m 1.9g 1.9g S 0.0 16.1 0:05.47 xyz 31217 test

在多个架构中使用的Oracle序列对象

我需要在多个Oracle模式(存储过程)中使用同一个序列对象。通过改变序列所有者,所有模式都可以利用对象,这是否可能实现 使现代化 正如第一位评论者所指出的,向某个用户授予插入(或其他)权限需要全部: Grant insert on seq_name to user_name; 或 您不需要更改所有者,只需将该序列上的select授予其他Oracle用户即可。您无法更改所有者,除非删除并重新创建它。正如@a_horse所说的,你不需要。@a_horse_没有名字,你能把你的答案写在下面吗? G

Oracle SQL开发人员-如何生成ER图

我已经使用OracleSQLDeveloper创建了一个数据库,但是我正在努力从数据库模型创建一个ERD。有人能帮我吗?我使用的是Oracle SQL Developer的第4版。SQL Developer中的数据建模器是一个很好的选择。下面是一个分步指南: 这将以非常简单的方式为您提供整个数据库或所选表的完整图表。我也找到了这个:

Oracle ORA-12170:TNS:发生连接超时

我试图使用Oracle Toad连接到笔记本电脑中的数据库,但一直出现以下错误: ORA-12170:TNS:发生连接超时 我一直犯这个错误的可能原因是什么 我昨天访问了同一个数据库,并且能够访问它。[在评论中收集答案] 问题是Oracle服务在一个IP地址上运行,而主机配置了另一个IP地址 要查看Oracle服务的IP地址,请发出lsnrctl status命令并检查报告的地址(本例中为127.0.0.1,本地主机): 要查看主机IP地址,请发出ipconfig(在windows下)或ifco

向oracle中的现有表中添加具有默认值的列

我创建了一个名为-books的表,其中有一列标题为“color”。最初,我在“color”列中有空值。现在,当我运行以下查询时: alter table books modify color default 'blue'; 架构已形成,但在执行“从书本中选择*”时,列颜色中的所有值仍然为空。要激发的正确查询是什么 以下是链接: 当然可以。ALTERTABLE只更改表结构,而不更改内容。新条目将获得默认值 要更新现有值,请运行sql update查询,如: 更新书籍设置color='blue

模式?到底是什么。为什么我们不使用createschema语句,w.r.t Oracle

我有一个数据库,它有几个表。现在有N个用户可以访问该数据库和这些表 唯一的区别是,每一个都有不同的登录id、密码,但对表的访问权限、权限都是相同的。典型的项目环境 每个用户都有自己的模式,或者他们连接到同一个模式,而他们只是用户 当你访问一个表时,说点什么。表\这里有什么是用户?模式 你问,当你访问一个表时,说些什么。表\u这里的名称是User?模式 模式。碰巧它和用户ID是一样的。从奥斯卡的链接: 模式是数据或模式对象的逻辑结构的集合。架构由数据库用户拥有,并且与该用户具有相同的名称。每个用户

如果将上限应用于数字列,Oracle是否能够计算出索引

如果我们在表“person”中有一列“dob”(varchar2) 我们可以为其创建索引,即“创建个人索引(dob)” 如果我们执行诸如upper(dob)之类的查询,它将忽略现有索引,因此 我们需要创建一个索引,如“创建个人索引(上限(dob))” 但是,如果dob列的类型为number,该怎么办? 当查询为上限(dob)或下限(dob)或任何对数字列没有影响的操作时,Oracle是否能够聪明地使用为person(dob)创建的索引 我知道,如果这些函数没有意义,就不应该将它们应用于列。但是,

如何在oracle中使用repalce函数更改查询中的字符串

我想用“2015-03-10 11:45:15”更改当前的时间戳,但oracle给出了 错误。不过,如果您删除select语句,它就可以正常工作了 select replace (SELECT TO_CHAR(CURRENT_TIMESTAMP) FROM DUAL,CURRENT_TIMESTAMP,'2015-03-10 11:45:15') As result from dual; 这很好,但我有这么长的查询和当前的时间戳来了好几次,我想用给定的字符串替换它 它在mysql中运行良好我希

Oracle在一行中包含多个值

我有一个在我的表中插入4个新行的查询。我不要这个。我想插入一行并用,分隔值。我该怎么做 INSERT INTO DOCUMENTATION (NAME, VALUE, QUERY, INSERTDATE) SELECT 'Datafile paths', name, 'select name from V$DATAFILE', SYSDATE from V$DATAFILE; 尝试使用“| |”连接所有值,如: 如果只需要选择一行,则需要指定where子句,如: INS

Oracle 同一源数据上的两个ETL

对不起,这是一个非常新的问题,但我想得到一个简单的答案 我们有我们的数据,它被存储为原始数据。目前,我们有一个ICT团队,他们制作了一个ETL过程,将其转化为可用于分析的东西,这需要很多时间。问题是,所花费的时间意味着需要返回的数据质量报告通常会延迟,并阻止问题得到解决。由于DQ需要在原始数据上完成而不是清理,我可以运行构建第二个ETL过程来创建DQ表 我的意思是,它们可以同时运行,因为主ETL将是一个使用原始数据作为数据源的Oracle进程,而我要构建的ETL也将使用Oracle中的原始数据作

Oracle 甲骨文的含义';s转储(systimestamp)字节

我试图理解数据库上设置的时间戳中的字节是什么意思。如何计算它们以生成更可读的日期 我正在使用以下查询获取我需要的数据: SELECT systimestamp ,DUMP (systimestamp) ,sessiontimezone FROM dual; 我上面查询的结果是: +-------------------------------------+--------------------------------------------------------------

Oracle 包含SQL语句字符串的表列的PL/SQL过程

我的任务是构建一个过程,根据另一个表中的值将值插入到新表中,包括包含不同SELECT语句的字符串的列 我正在使用的表有一个ID列、一个ITEM1和ITEM2列,以及一个SRC_CODE列,其中包含,例如,SELECT KEY FROM FACT_table,其中DAY_ID=V_DAY_ID和一些其他条件。因此,在执行此过程之前,必须填充V_DAY_ID变量。将插入到新表中的值将是来自ITEM1和ITEM2列的值,以及来自SRC_CODE列中select语句的数千个结果的关联键。对于PL/SQL

在oracle中插入日期为dd mon yy

我试图将日期值插入为dd mon yy,但数据库将其存储为dd/mm/yy 例如:在tablename值中插入(截止日期('09年3月1日','dd-mon-yy') DB将其存储为01/03/09。为什么?我不能将其存储为01-03-09吗 请提供帮助。Oracle不以任何格式存储日期。它只存储“日期”。您正在以其他格式查看/显示它。请检查您的nls\U日期设置 SQL> select sysdate from dual; SYSDATE --------- 28-OC

Oracle Apex是否适用于近BI web应用程序?

我一直在使用Laravel 5开发数据库,主要是MySQL数据库,但是我对Oracle DB有基本的了解(以前从未在项目中使用过它)。最近,我们公司让我开发了一个规范如下的系统: 我们希望所有数据都在一个中央数据库中(目前有很多Excel)。我希望这个web应用程序能有每一个巨大的表单 在Excel示例中 不同部门(大约14名)的员工将进入并登录该应用程序并填写web表单(每个部门都有自己的web表单格式)。不同部门提交的数据必须由该部门的不同经理验证,然后才能提供给报告部门进行分析 Ora

Oracle PL/SQL存储过程错误

这是我用PL/SQL编写的代码,我试图从csv文件中读取数据并插入到Oracle数据库的表中 通常,当我插入时间戳值时,我会执行以下操作 insert into t (start_time) values (TO_TIMESTAMP('12-SEP-12 10.31.19','DD-MON-YY HH.MI.SS')) 现在我从如下所示的wards上的这些行中得到错误 f_call_start:=到时间戳(substr(l_线,comma2+1,comma3-comma2-1),'DD-MO

Oracle PL/SQL,DBMS\U SQL无法显示数据

我是DBMS_SQL方面的新手。我正试图从游标中获取第一行,但未显示任何内容。我做错了什么?这里有一个代码: CREATE OR REPLACE PROCEDURE TEST_SQL IS id_var NUMBER; name_var VARCHAR2(30); sal_var Number; source_cursor INTEGER; countp

Oracle 如何按月分组,包括所有月份?

我把我的桌子按月份分组 SELECT TO_CHAR (created, 'YYYY-MM') AS operation, COUNT (id) FROM user_info WHERE created IS NOT NULL GROUP BY ROLLUP (TO_CHAR (created, 'YYYY-MM')) 2015-04 1 2015-06 10 2015-08 22 2015-09 8 2015-10 13 2015-12 5 2016-01 25 2016-

Oracle OBIEE 12.2.1.2-从较早保存的RPD副本还原RPD

当前的主题是创建定期数据备份和数据安全 1。RPD 第11条: 在本地保存RPD的副本 在Enterprise Manager中部署RPD的可能性 第12条: 在本地保存RPD的副本 无法在Enterprise Manager中部署RPD。 此选项是否不再可用 2。RPD和其他一切 我能想到的另一个选择是使用“export/importServiceInstance”创建备份:从而保存所有内容(rpd、webcat、conpools等) 非常感谢您的想法和建议 您是对的,使用OBIE

Oracle 如何在同一行中用单独的列显示多行数据

我有一个表名ID_TXN,其中“concurrence_SL”列有多个TXN,其中1txn有多个contra TXN。我想如下所示显示它们 My Table Data | RECONCILE_SL | AMOUNT_DR | AMOUNT_CR | TR_REF_NO | TRN_DATE | | ------------ | --------- | --------- | ----------- | ----------| | 2

Oracle从值中选择并从最后一个值中减去

需要有关OracleSELECT语句的帮助。 我有一张这样的桌子,上面有用过的日子。用户可以有11天 +----+----------+-----+-----------+ | ID | NAME | USED| DATE | +----+----------+-----+-----------+ | 1 | John | 1 |01/01/2018 | | 2 | John | 2 |01/03/2018 | | 3 | John |

Oracle 表ESPUMA.ORDER\u详细信息正在变化,触发器/函数可能看不到它

我有3个表,其中包含以下列: 产品(产品id、图像、名称、价格、创建日期)订单(订单id、金额、客户地址、电子邮件、客户姓名、电话、订单日期、订单编号) 订单详细信息(id、金额、价格、数量、订单id、产品id) 我创建了一个名为PRODUCTS\u salled(product\u id,quantity)的新表和一个名为PRODUCTS\u trigger的触发器,因此每次插入ORDER\u DETAILS后,每个产品的产品id和数量都将插入表PRODUCTS\u salled 这是触发因素

Oracle APEX_JSON获取数组对象

这是我用来提取数据数组对象的代码。我期望得到以下结果: declare l_json_doc VARCHAR2(32767); l_numcols number; l_numrows number; begin l_json_doc := '{ "table": { "name": "sometablename", "numofcolumns": 5, "numofrows": 5,

Oracle DB从AIX迁移到Linux的工具

我的同事在AIX中运行Oracle数据库(11g),他们希望将此数据库移动到RHEL。我已经找到了。但是,我想检查是否有人已经迁移或使用了任何其他最佳工具 有什么原因不能只使用Oracle数据库泵吗 在RHEL上创建数据库,确保使用兼容的字符集 您有几个选择。正如前面指出的,Oracle数据泵是最简单的方法。它将使您从每个版本>=10g向上提升(甚至在使用version=参数时返回) 警告是: 数据库的大小—以及您的停机时间要求 对于较大的数据库,可传输表空间是通常的选择。需要做更多的工作,因为

Oracle 如何写where子句

如何在where子句下将此代码作为case语句编写 IF trim$(ps_status) <> "" AND NOT isnull(ps_status) THEN SELECT CASE ps_status CASE 'O' p_con.pipeline_tx_status = 'O' CASE 'MFT' p_con.pipeline_tx_status = 'MFT' CASE 'IS' p_con.pipeline_tx_status = 'IS'

Oracle 在sql查询中避免GROUPBY子句中的列

我有一个SP,试图在Oracle目标表(11.2)中插入记录。在子查询命名为“a”中,我有一个列PROJECT,这是子查询“b”的连接条件之一,但在这里,如果我将列“PROJECT”放在子查询“a”的group by子句中,我不会得到期望的结果 但同时我需要引用与子查询“b”的连接条件相同的条件 CREATE OR REPLACE PROCEDURE PROC1 AS BEGIN INSERT INTO TARGET_TABLE SELECT a.SECT,

Oracle中带有CASE-WHEN-in子句WHERE的存储过程

我在甲骨文公司工作,我正试图做一个存储过程来获取数据 我想在的WHERE中插入一个case,但它不能编译我,我会遇到以下错误: 错误(11.5):PL/SQL:SQL语句被忽略 错误(22.37):PL/SQL:ORA-00905:缺少关键字 这是一个过程: create or replace PROCEDURE SP_S_DETTAGLIOLOTTI ( DATAINIZIO IN VARCHAR2, DATAFINE IN VARCHAR2,

选择进入临时表时出现Oracle错误

我的最终目标远比这复杂,但这是导致我错误的原因的简化版本。我想把一些行放到一个临时表中(实际上是几个临时表,但我无法克服第一个障碍)。这是我的PL/SQL DECLARE type L1_store is table of MyTable%rowtype; L1 L1_store; BEGIN select * bulk collect into L1 from MyTable WHERE 1=1 and length(My

用正则表达式导出的Oracle | XML数据

我创建了一个查询来从表的XML列中提取数据,但当XML有数据列表时,我遇到了问题,即 可乐品牌内部有多个代码 见我的问题 select extract(cola_info, '/ns2:cola/coke/bottleCode', 'xmlns:ns2="http://myColaStaticInfo.com"') as op; 输出类似于 我希望一个接一个地突出显示内容,而不是在一个专栏中一起突出显示 任何想法 我的XML是这样的 <?xml version="1.0" encodi