Oracle PL-SQL:从查询结果中获取列数据类型

尝试创建一个通用PL/SQL过程,以特定的XML格式导出数据,例如Excel XML。假设该过程接受带有SELECT查询的字符串以立即执行 这需要访问结果行集的每一列的数据类型,因为过程是泛型的,只有在查询运行后才知道 我尝试了一种使用临时表的方法,但是对于编译过程,表必须存在并且在编译时知道其结构 下一步如何在双循环中处理EXECUTE IMMEDIATE结果的行和列,该循环分析每个值的类型并发出相应的XML?使用EXECUTE IMMEDIATE无法做到这一点。您必须使用功能更强大、更复杂的

如何使用APP_MULTI package支持Oracle表单中的多项选择?

Oracle提供了APP_MULTI软件包(可在APPCORE库中找到),以支持Oracle表单中记录的多选。为了利用此功能,我必须对表单执行哪些操作?例如: 我必须实现哪些触发器 我应该调用哪些APP\u MULTI方法以及何时调用 使用APP\u MULTI软件包,您可以在表单中添加多选功能。这包括: 只需单击一条记录,即可选择该记录 按住Ctrl键并单击各种记录,可以选择多个记录 通过从应用程序菜单中选择“全选”,可以批量选择多个记录 通过从应用程序菜单中选择“全部取消选择”,可以批量

oracle错误,此处不允许列

我有一段时间没用甲骨文了,所以我有点生疏了 这是我的桌子: create table calendar( username VARCHAR2(12), content VARCHAR2(100), dateContent DATE, type CHAR(3) CHECK (type IN ('PUB', 'PRV'))); 但当我尝试插入这样的值时: insert into calendar (username, content, dateContent, type) values (chr

Oracle 如何使用SELECT结果记录作为解码参数?

当此SELECT仅返回一条带有准备字符串的记录时,是否可以使用SELECT result作为解码参数? 例如: 选择replace(replace(序列化的_数据)…)作为表的结果 在一行中返回以下结果: 0,'label0',1,'label1',2,'label2' 但当我把它解码时,它被解释为一个参数。 是否有可能将此结果“字符串”转换为“纯”sql代码?;) 感谢您的帮助。根据oracle的版本列出agg或wm concat 根据oracle的版本列出agg或wm concat 您可以使

Oracle 甲骨文蟾蜍-自动完成

也许这是一个新手问题,但我是甲骨文界的新手。 我正在使用TOAD for Oracle 9,有两台服务器使用Oracle 10g,当我连接到服务器A时,我可以使用TOAD的te自动完成功能,但当我连接到服务器B时,自动完成功能不会出现。 这两台服务器具有相同的数据库,A用于开发,B用于生产。 我非常感谢你的帮助 我猜,无论您在生产环境中连接到什么模式,都缺少TOAD用于自动完成的系统视图特权。您能否在生产环境中运行此查询,例如: 选择列名称、数据类型、列id 从SYS.user_tab_列,如果

从Oracle窗体调用Jasperreports

谁能建议如何调用Oracle forms 6i中的.jasper报告文件 任何建议都将不胜感激我找到了以下解决方案 v_url := '<your url to the report>'; host ('cmd /c start '||v_url); v_url:=''; 主机('cmd/c start'| | v|u url); 但我不确定是否有更好的替代方案几年前,我为Oracle Forms 6i(终端版本)实现了类似的功能 运行Oracle Forms 6i的应用程序

Oracle 具有重复数据的主键?

我试图分配一个主键,但有些数据是重复的?如何在保留数据的同时仍保留主键?主键是一系列唯一的值。因此,您可以保留重复的数据,也可以拥有主键,但不能同时拥有主键和主键 或者,您可以使用代理键,方法是向表中添加一个ID列并从序列中填充它。当然,在这种情况下,“原始密钥”是没有意义的,因为您没有强制执行业务密钥的唯一性。但至少你可以欺骗自己,你有真实的完整性。主键是一系列独特的值。因此,您可以保留重复的数据,也可以拥有主键,但不能同时拥有主键和主键 或者,您可以使用代理键,方法是向表中添加一个ID列并从

Oracle 脚本(或代码中的逻辑)导致死锁

下面您将看到在Oracle 11中导致锁定的存储过程。不幸的是,我所处的公司环境不允许我访问跟踪日志或基本上任何内容。所以我读了很多关于如何做到这一点的建议,然后哭着说我做不到。我不确定你是否能从下面判断这是罪魁祸首。无论如何,谢谢大家的时间 MERGE INTO my_owner.my_table tgtT USING (SELECT diTT, sisCd FROM my_owner.NGR_DMNSN_TYP where DMNSN_NM_TXT = 'myname'

Oracle 11g索引提示

给定一个表,其中列a、B和C的类型为CHAR(15)和唯一索引 如果我有一个WHERE子句指定a和C的查询,oracle的优化器会选择进行索引范围扫描。但是如果我知道B的基数很低,我是否应该提示oracle使用索引跳过扫描?跳过非前导列(在本例中为B)是否比范围扫描更有效?跳过扫描会同时跳过索引中的A和B还是只跳过B?通常,优化器更擅长判断范围扫描是否比跳过扫描更有效(反之亦然)。如果优化器做出了错误的选择,那么问题几乎总是归结为人类没有以表和索引上的准确统计数据的形式向优化器提供适当的信息(包

Oracle Grails:自定义ID-年份,后跟递增的数字

我试图找出如何最好地为某些Grails域模型类实现自定义ID。要求ID以年份开始,后跟破折号和递增数字(在下一年重置为0)。所以ID应该是: 2014-1 2014-2 2014-3 使用自定义ID的实际部分不是问题。我陷入困境的地方是找出始终递增ID的最佳方法。通常情况下,数据库会处理递增ID并确保其唯一性。然而,由于我将使用自定义ID,我想我需要处理这个问题。是否有可能以某种方式让数据库参与到这些独特的测试和增量中来?解决这个问题的通常方法是什么 顺便说一句,我正在后端运行Oracle数据

PL/SQL ORACLE中作为变量的列名

我希望有一个代码,其中我将声明一个列名为变量,然后使用此变量从某个表中检索所需的列 DECLARE col_n VARCHAR (100) := 'X' ; BEGIN select col_n from my_table; END; 在Oracle中,最简单和明确的方法是什么?您可以使用它来执行构造为字符串的查询。 它将沿着以下思路发展: DECLARE col_n VARCHAR (100) := 'X' ; plsql_block VARCHAR2(500); BEGIN pls

perl数据未插入oracle数据库

嗨,我需要导出这些密钥、值,我正在引导导出,请分享您的想法 我的数据文件是这样的 Oct 1 06:25:45 github.com: { "pid":14428, "ppid":14397, "program":"upload-pack", "git_dir":"/data/repo/testorg/testrepo.git", "cmdline":"git-upload-pack --stateless-rpc .", "repo_name":"testrepo", "hostname":

oracle中记录的顺序

在oracle中,有没有可能找到哪个记录是先输入的,哪个记录是第二个,依此类推?这不一定是记录的SCN,因为我不关心确切的时间。我只想按照记录的输入顺序对记录进行排序。一般来说,除非您有提供该信息的列(例如create\u date) 如果您可以假设从不更新行,并且您的表是使用ROWDEPENDENCIES构建的,那么您可以通过ORA\u ROWSCN进行排序。但是,很少有人会有这样一个表,所以一般来说,这不是一个特别有用的答案。在我与Oracle共事的所有岁月中,我对自己开发的逻辑和编码实践更

Oracle ADF安全性如何执行实际身份验证?

我希望通过在我的应用程序中启用ADF安全功能来利用ADF安全功能,应用程序的标识存储是一个数据库表。如何让ADF基于此身份存储对用户进行身份验证 企业角色和应用程序角色如何映射到数据库中定义的用户 我正在使用WebLogic作为web容器。要使用数据库中的企业角色和用户,您需要一个如本博客所述的配置: 每个企业角色名称都将自动转换为应用程序角色。因此,您不需要显式映射 问题是什么?有很多链接可以尝试-没有更多的信息,没有人可以帮助

Oracle集合/PL/SQL编程

我是ORACLE PL/SQL编程领域的初学者,这是我第一次使用集合。这是我的要求。我已经从两个表中定义了两个具有必需列的对象,现在,在逐个记录地拾取记录的过程中,我必须检查许多条件,一旦验证完所有场景,我必须使用与第二个表最接近的匹配项更新第一个表记录。这就是它的样子 DECLARE TYPE OBJ1 AS OBJECT( COLUMN1, COLUMN2, COLUMN3, COLUMN4, COLUMN5, COLUMN6 ); TYPE OBJ2 AS OBJECT( COLUMN

Oracle 无法在SQL developer中提交更改

我更改了表字段中的数据,然后单击“提交”图标。数据没有更新,我从数据编辑器日志中看到了这条消息 One error saving changes to table "EVO"."T_CAP_SUM": 但是,当我使用查询时,数据已经更新 UPDATE T_CAP_SUM SET FCNT_004 = '0' WHERE CELL_NO = 'MAT-02' 为什么会发生这种情况?在某些情况下,SQL Developer使用行SCN上的谓词进行更新的方法不起作用。在这些情况下,您通常可以通过取

调用Oracle PL/SQL过程时使用什么编码

在我的coldfusion页面上,我调用了一个PL/SQL过程。HTML表单是使用UTF-8编码的,oracle DB的编码是WE8ISO8859P1。那么在下面的i_值的情况下会发生什么样的转换呢 我特别感兴趣的是MS Word左引号(在UTF-8中编码为E28098)的情况。当我在PL/SQL中解码I_值时,它变成18(十六进制)。考虑到现在是U+2018,这有点道理,但我仍然想知道为什么20会被吞没 <CFSTOREDPROC PROCEDURE = "my_schema.lib.w

oracle根据多边形ID计算多边形组内多边形的空间面积

我有一个表pline\u sp,它有一个包含SDO\u几何体多边形的geom列。每个多边形都有一个类类型。我编写了一个SQL查询来查找类C1,并从类C2中查找驻留在类C1中的所有多边形,然后对所有多边形的面积求和 我不确定这是不是最好的方式,但问题如下: select sum(SDO_GEOM.SDO_AREA(result.geom, 0.005, 'unit=SQ_KM')) from (SELECT a.geom FROM pline_sp a, (s

Oracle将UNIX时间戳转换为带时区的时间戳

正在尝试将UNIX时间戳转换为带时区的Oracle时间戳。 希望看到不同的输出,但是datetime部分是相同的 拧什么 select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('EST') from dual; 输出:2008年2月27日09.21.56.656000000上午-05:00 select (timestamp '

Oracle DBMS_METADATA.GET_DDL响应非常慢

我需要知道为什么有时在运行DBMS\u METADATA.GET\u DDL命令获取包的DDL时会花费很长时间,但是,如果运行一段时间后运行良好,是否对数据库进行任何更改。数据库是远程的,也许网络可能会影响这一点,但我尝试运行其他查询,并做得很好。您知道该功能间歇性延迟的具体原因吗?这是我第二次面对这个问题,我正在努力寻找原因。我的印象一直是,第一次执行可能需要几秒钟,而随后的任何执行通常都不到1秒。我不太想跟踪到底执行了什么。也许吧,但我在15分钟后取消了第一次执行,第二次也花了5分钟多(也取

Oracle grails中如何在条件查询中进行左连接或右连接

我正在使用Grails2.1.1。这里我有两个域名。一个是-InvIssue-另一个是-SlsDoMst-。InvIssue域中存在SlsDoMst的外键。现在,我需要找到不在InvIssue表中的所有SlsDoMst行。到目前为止,我使用的纯sql如下所示: 我的oracle查询>>> SELECT MS. * FROM SLS_DO_MST MS LEFT OUTER JOIN INV_ISSUE ISS ON MS.MID = ISS.SLS_DO_MST_MID 但我需要使用条

oracle pl/sql输入错误

代码: DECLARE N NUMBER :=&N; BEGIN DBMS_OUTPUT.PUT_LINE(N); END; SET serveroutput ON SET define OFF DECLARE N NUMBER :=&N; BEGIN DBMS_OUTPUT.PUT_LINE(N); END; / Error starting at line : 8 in command - DECLARE N NUMBER :=&N; BEGIN

Oracle函数(如TZ_Offset和FROM_TZ)从何处获取数据?

我正在优化一些函数,其中我需要将许多时间戳转换为UTC。我需要创建一个包含以下列的表: 年份| TZ|U名称|夏令时开始|夏令时结束 我可以使用oracle中的from_tz函数轻松地转换时间戳,但是不能选择按时间戳运行此函数。有人知道oracle功能是如何工作的吗?我找不到任何详细说明oracle保存这些夏令时规则的文档 有什么建议吗 谢谢大家! 时区相关信息存储在文件中,如下所示: Oracle时区文件包含有效的时区名称。这个 每个时区还包括以下信息: •与协调世界时(UTC)的偏移量 •夏

Oracle中的重载

请帮我回答下面的面试问题 问:为什么在oracle中不能重载独立子程序。在oracle中只能重载包子程序/本地子程序 问候 Srikanta Parida因为存储过程/函数名是唯一的。 请参阅Oracle文档: 命名程序和功能 由于过程或函数存储在数据库中,因此必须 命名的。这使它区别于其他存储过程,并使其 应用程序可以调用它。每个公开可见的程序 架构中的or函数必须具有唯一名称,且名称必须为 合法的PL/SQL标识符 因为存储过程/函数名是唯一的。 请参阅Oracle文档: 命名程序和功能 由

Oracle 有没有办法保证PL/SQL作业的DOP?

我的并行PL/SQL作业常常以错误ORA-12842或语句的串行执行结束。每个作业都有固定的并行度(DOP)配额 有没有办法破解它并保证每次运行的并行性?我不认为你可以真正破解它,但你绝对可以避免ORA-12842和串行执行 您可以抑制ORA-12842并以静默方式重新启动PL/SQL作业 给它可配置的尝试次数,并在最终尝试失败时继续 过程exec\u insert(来自下面的示例)将执行多次尝试以执行DML。 它将以16的最大DOP开始,失败时以DOP 8、4、2无声地重新启动作业,如果2失败

Oracle 动态插入在过程中失败,但与静态SQL一样工作

我正在研究一个程序,将数据从一个大矩阵转换成一个由三列组成的表。我在动态地将行插入表中时遇到一些困难。当我尝试执行下面的过程块时,我得到一个错误消息: ORA-00936: missing expression ORA-06512: at line 24 00936. 00000 - "missing expression" 该过程生成一个有效的insert语句,我可以将其作为静态SQL复制和执行。执行立即stmnt之前的所有操作都正常工作。此外,我有一个几乎完全相同的过程,可以完美地运行。

Oracle 尝试根据日期和时间创建触发器

我正在尝试创建一个触发器,如果在办公时间以外(即8-18小时或星期日以外)进行插入、更新和删除,它将阻止插入、更新和删除 这是我的密码: CREATE OR REPLACE TRIGGER HOLIDAY BEFORE DELETE OR INSERT OR UPDATE ON DEPT FOR EACH ROW BEGIN IF ((EXTRACT(DAY FROM SYSDATE)='SUNDAY') OR (EXTRACT(HOUR FROM LOCALTIMESTAMP) NOT BET

Oracle SQL开发人员和Oracle 9i版本

我使用的是Oracle SQL Developer版本: 在Oracle 9i数据库中尝试执行SELECT时,出现以下错误: 我的机器上安装了PL/SQL DEVELOPER,通常我可以在同一个数据库(Oracle 9i)中选择相同的表,但使用Oracle SQL DEVELOPER时,我遇到了错误 解决方案 我下载了驱动程序ojdbc6.jar,并在高级工具OracleSQLDeveloper中进行了设置。一切正常。解决方案 我下载了驱动程序ojdbc6.jar,并在OracleSQLDev

Oracle 参数处于条件中的Pl sql游标

假设我有一个带有用户输入参数的过程 Create procedure Match_Record(v_match_ID) Cursor match is Select * From table A Where not exists(select ‘bbb’ from table B Where a. v_match_ID = b. v_match_ID); 它不会编译,因为v_match_ID不是有效的标识符 那么,executeim

Oracle 当按下按钮时,字段变为空?

我正在为oracle forms 10g中的搜索数据创建表单 当用户从非数据库字段中选择LOV并按下搜索按钮时,非数据库字段变为null。当按下按钮时,我希望字段不为空,屏幕截图会有所帮助;不清楚非数据库字段放在哪里。如果它是一个表格布局论坛,它是否放在所有其他字段中?或者它在控件、非数据库块中的某个位置 不管怎样:我会这样做的 首先,如果可能的话,避免发明自己的搜索算法。Forms非常擅长自己做这些事情。很快: 进入查询模式 输入搜索条件从值列表中选择它;为什么不呢? 执行查询 除LoV外,绝

Oracle 如果过程中的日期输入参数为空,如何设置其默认值?

我有一个程序,它接受fromDate和toDate输入参数,我需要将默认值分别设置为上个月的第一个日期和上个月的最后一个日期。我试图使用下面的代码,但仍然没有设置正确的默认日期。请让我知道以下代码是否有效,或者我可以做些什么来更正它: create or replace PROCEDURE "TEST" ( fromdate_in IN varchar2, todate_in

JPA em.find(id)适用于Oracle,但不适用于MariaDB

您好,我有一个应用程序运行在JBoss EAP 7上,带有JPA Hibernate 我在一个简单的entityManager.find(id)调用中遇到问题 该调用针对Oracle 12数据库生成一个SQL select messagedat0_.id as id1_4_0_, messagedat0_.messageid as messageid3_4_0_, messagedat0_.messageblob as messageblob2_4_0_,

Oracle 同一表空间上两个模式的相同表名

在Oracle中,是否可以在一个表空间中存储共享相同名称但为不同用户(模式)定义的两个表的数据 或者如果出现名称冲突,我可能需要为每个用户创建单独的表空间 我自己无法轻松检查它,因为我目前没有任何具有适当权限的实例可用。如果您的意思是您有2个用户(架构),那么您可以使用不同的用户创建两个名称相同的表,例如create table user1.tab1…和create table user2.tab1… 如果可能有名称,我需要为每个用户创建单独的表空间 冲突 让我做一些解释。在oracle中,您已

使用oracle报表生成器12调用报表

我需要通过报表生成器12调用另一个报表,其中包含报表中的参数。但似乎是这样,没有按钮可以呼叫另一个。有什么方法可以从第一个报告调用第二个报告吗?这样的功能称为“向下钻取”(这样,如果需要,您可以自己进行研究) 在旧的Reports 6i中,您可以通过创建一个按钮来完成此操作。在modern Reports版本中,您必须使用超链接,它可以在“Web”设置中找到,如下所示: http://your_server:port/reports/rwservlet?userid=scott/tiger@or

在Oracle APEX中,我不能在CLOB中追加超过32kb的数据

我将文本存储在数据库表中,许多短行大约70-90个字符长的字段。(指历史原因)。我想将这些字段(行)附加到APEX(CKEditor)中的CLOB中,在许多情况下它都会执行32k。 我试过很多方法,但似乎有一些局限性。只要文本小于32k,我的代码就可以正常工作!我的计划是将它保存在一个新表中,并在那里使用clob。我有APEX 5.01。 当超过32k时,我得到“ORA-06502:PL/SQL:numeric or value error” declare l_clob CLOB;

Oracle 如何使用集合作为带有IN子句的更新表

我需要在存储过程中使用这段代码,以便传递一个ID数组并更新相关记录。我想知道是否必须在sp中使用循环而不是IN子句 SET SERVEROUTPUT ON DECLARE P_IDS PKGINFO.t_ids; --type: table of NUMBER index by pls_integer; P_RESULT NUMBER; BEGIN p_IDS(1) := 12345; --this works fine: for i in ( select *

Oracle “遇到错误”';(';expected";尝试执行for循环以查找前十个数字的和';

我正在尝试用PL SQL编写一个简单的for循环程序,以查找从1到10的前十个数字的总和 早些时候,我在declare中初始化了变量。但是,当我遇到错误时,我在declare部分中声明了它,并在begin部分中初始化了它,希望这可能就是问题所在。 然而,我仍然得到了错误 SQL> declare 2 sum integer; 3 begin 4 sum := 0; 5 for k in 1..10 6 loop 7 dbms_output.put_lin

人工Derby DB迁移到Oracle

我们目前正在运行带有内置Derby DB的Artifactory,并希望迁移到Oracle。因此,我们按照中的步骤迁移数据。在数据导出中,我选择了“排除内容” 我们使用LDAP配置了Artifactory,在迁移之后,LDAP配置都已就绪,并且登录在LDAP中工作正常。看起来一切正常,但当我检查权限和组时,没有一个迁移到Oracle。我是不是遗漏了什么?我是否需要重新创建权限和组?我的理解和假设是,所有内容都将被迁移。您是否执行了系统级导出/导入(而不仅仅是存储库)?您正在运行哪个版本的Arti

Oracle 将PostgreSQL函数转换为PostgreSQL存储过程

我使用AWS-SCT将一个模式从oracle迁移到postgreSQL,包被转换为postgreSQL中的函数。 我需要将此函数转换为过程,以便与应用程序中间件中的代码紧密配合 我试图转换为过程,每次我遇到错误,比如SQL state:42601和inout参数都是允许的 请帮助将函数转换为过程 CREATE OR REPLACE Function "pk_audfreq$sp_audfreq"( OUT out_a double precision, OUT out_b dou

Oracle DB2 CLP在.sql文件中传递变量

由于我的shell脚本多次使用超长SQL语句调用Db2,因此我想从脚本中提取SQL语句并将它们放入.SQL文件中,然后从Db2命令行处理器Db2-f xxx.SQL运行它 我希望一些SQL语句使用从shell脚本传入的变量 有没有像Oracle的sqlplus这样的方法可以通过“&1”在.sql文件中传递变量 xxx.sql SELECT * FROM TABLE_A WHERE FIELD_B > &1 CLP db2 -f xxx.sql 999 这将返回一个DB21004

Oracle 我没有看到收集索引统计数据的输出统计数据。我在哪里能找到这个?

我无法在SQL Developer中的gather_index_stats中找到统计信息。我想检查我的索引是否提高了select语句的速度 dba_索引将有一些统计信息 如果您想知道它是否提高了SQL语句的速度,那么您应该运行该语句,看看它是否更快。但我找不到以下输出:dbms_stats.gather_index_statsownname=>“cwojtek_admin”,indname=>“test_kol2_idx”;看起来脚本中缺少了一行“/”来实际提交pl/sql命令。既然你已经分享了