Tag: plsql

ORA-22054下溢错误

我试图让我的存储过程在Oracle中工作,并且我遇到了一个下溢错误。 我试图从六个不同的表中删除相关信息。 我可以在SQL Developer中单独运行delete语句而不会出错。 当我尝试从我的C#代码隐藏中运行该过程时,我得到一个带有下溢错误的exception。 有什么建议? 这是代码: Procedure DeleteProf(i_prof_sk IN NUMBER) IS BEGIN delete from nt_fac where nt_per_sk in (select nt_per_sk from nt_per where nt_prof_sk=i_prof_sk); delete from nt_per_fact where nt_per_sk in (select nt_per_sk from nt_per where nt_prof_sk=i_prof_sk); delete from nt_per where nt_per_sk in (select nt_per_sk from nt_per where nt_prof_sk=i_prof_sk); delete from nt_prof_case where nt_prof_sk=i_prof_sk; delete […]

C#Regex从pl / sql代码中获取注释块

我想从字符串中提取注释作为块。 例如,我有一个PL / SQL代码: –comment1 select * from t_table; –i want comment 2; /*i want comment 3 */ –i want comment 4 OPEN data_cur; 在这里,我想要在OPEN data_cur之前的所有单行和多行注释; 但是从t_table中选择*后; 即我想要两个PL / SQL语句之间的完整注释块。 我希望正则表达式匹配字符串并形成组: SQL语句 整个评论块 可以使用任何正则表达式完成吗?

有没有办法使用DBMS_Alert通知Winform应用程序数据库更改

我正在尝试使用Oracle 10g获取winform应用程序以刷新数据库更改的嵌入式浏览器。 唯一的问题是我不被允许使用数据库更改通知。 我很好奇是否有人有办法使用DBMS_Alert的内置包并且在数据库更改时对winform应用程序进行了一些操作。 谢谢,安德鲁

我如何在oracle中将参数作为varchar2输出

我正在使用oracle 10g 这是我的包装规格和正文 CREATE OR REPLACE PACKAGE P_1 AS TYPE T_CURSOR IS REF CURSOR; PROCEDURE USP_1(SP_NUM OUT VARCHAR2); END P_1; CREATE OR REPLACE PACKAGE BODY P_1 AS PROCEDURE USP_1(SP_NUM OUT VARCHAR2) IS BEGIN SELECT to_char(concat(to_char(sysdate, ‘yyyymm’), to_char(“ActionId”.nextval, ‘000’))) INTO SP_NUM FROM dual; END USP_1; END P_1; 我的后端代码是 using (OracleConnection oracleConnection = new BaseRepository().Connection) { oracleConnection.Open(); […]

从C#中的PL / SQL匿名块返回游标

我正在努力将现有的应用程序从SQL Server转换为Oracle,我遇到了障碍。 我正在尝试将匿名块作为动态SQL执行并返回结果集。 然而,我尝试过的任何东西似乎都无法返回任何值。 由于设计限制,存储过程已经完成。 我的查询定义为: DECLARE type id_array IS TABLE OF number; t_Ids id_array; BEGIN UPDATE CSM_RECORDS SET MIGRATION_STATE = 1, LAST_UPDATE = CURRENT_DATE WHERE OBJECT_UID IN (SELECT OBJECT_UID FROM CSM_RECORDS obj WHERE MIGRATION_STATE = 0 AND ROWNUM <= :BatchSize) AND (:BatchName IS NULL OR obj.BATCH_NAME = :BatchName) RETURNING OBJECT_UID BULK COLLECT INTO t_Ids; […]

将数组从.Net应用程序传递到Oracle存储过程

我需要将一个数组从C#.net应用程序传递给oracle存储过程。 任何人都可以让我知道如何去做吗? 另外,在将输入参数传递给存储过程时,我在C#中使用哪种OracleType类型? 仅供参考,我在C#app中使用System.Data.OracleClient。 谢谢。

从C#将表类型对象作为输入参数传递给Oracle中的存储过程

我有接受表类型作为输入参数的存储过程。 如何从c#代码传递对象? create or replace TYPE CUSTOM_TYPE AS OBJECT ( attribute1 VARCHAR(10), attribute2 VARCHAR(10) ); create or replace TYPE CUSTOM_TYPE_ARRAY AS TABLE OF CUSTOM_TYPE; PROCEDURE SP_TEST ( P_TABLE_IN IN CUSTOM_TYPE_ARRAY, P_RESULT_OUT OUT SYS_REFCURSOR ) AS BEGIN OPEN P_RESULT_OUT FOR SELECT ti.attribute1, ti.attribute2, ti.attribute3 FROM TABLE(P_TABLE_IN) ea inner join MYTABLE ti on ea.attribute1 = ti.attribute1 and […]

从存储过程,返回OUT参数和OUT游标和解析结果(Oracle)

问题:是否可以使用OUT返回: 两者:一个变量和一个游标,从我的代码下面? 我在SqlDB上看到了类似的问题,但经过一段很长的搜索后发现没有针对OracleDB的解决方案。 在PLSQL中: CREATE OR REPLACE PROCEDURE SPGETRESULTANDSETFLAG ( pFilter VARCHAR2, pMaxRowCount VARCHAR2, pTableID RAW, myFlag OUT NUMBER, myCursor OUT types.cursorType ) AS BEGIN Declare CountQuery VARCHAR(20000) := ”; DataQuery VARCHAR(20000) := ”; ResultingRows NUMBER := -1; Begin myFlag := -1; CountQuery := ‘SELECT COUNT(*) FROM ‘ || F_GET_TABLENAME_FROM_ID(PTABLEID => pTableID) || ‘ WHERE […]

在oracle中使用“嵌套”事务

我在Oracle中遇到了麻烦。 我有一些这样的程序: create or replace procedure myschema.DataSave(v_value IN NUMBER) as begin SET TRANSACTION ISOLATION LEVEL READ COMMITTED; begin insert/update/delete… exception when OTHERS then goto error; end; COMMIT; return; <> ROLLBACK; return; end; / 我以这种forms从c#项目调用此过程: … string conn_str = “…”; OracleConnection con = new OracleConnection(conn_str); con.Open(); OracleCommand cmd = new OracleCommand(“”, con); try { cmd.Transaction = […]

如何调用返回引用游标的Oracle存储过程

我试图调用返回引用游标的Oracle存储过程,我需要从返回的数据生成树视图。 我是新手,我有两个问题。 第一个问题是我无法调用该程序。 我收到此错误:“调用’OBJECT_HIERARCHY’时参数的数量或类型错误” 我的第二个问题是,我不明白当这个过程返回一个引用游标值时,我将如何获取该数据? 该表中有超过5000条记录,我没有得到那些数据,而是一个引用游标值。 有人可以解释我如何使用ref游标值获取该数据。 我没有使用Oracle的经验。 这是oracle中的过程定义: CREATE OR REPLACE PROCEDURE SAD.object_hierarchy (nAppId IN NUMBER, nParentId IN NUMBER DEFAULT -1, o_cRefCursor OUT SYS_REFCURSOR) IS BEGIN IF NOT o_cRefCursor%ISOPEN THEN OPEN o_cRefCursor FOR SELECT h.PARENT_ID, h.CHILD_ID, h.H_LEVEL, o.OBJECT_IDENTIFIER, o.OBJECT_TYPE_ID FROM ( SELECT PARENT_ID, CHILD_ID, LEVEL AS H_LEVEL FROM OBJECT_RELATIONSHIPS START WITH PARENT_ID = nParentId […]