在Oracle 19c中,我创建了表:
create table SAMPLE_TABLE (
id NUMBER not null,
display_name NVARCHAR2(4000), )
当我运行脚本时:
declare
i integer;
p_tmp_clob clob;
begin
select JSON_ARRAYAGG(JSON_OBJECT(t.* )) into p_tmp_clob from SAMPLE_TABLE t;
end;
我得到了下面的ORA-40478异常。ORA-40478:输出值过大(最大值: 4000)
我试图创建一个索引,一个clob字段。有没有人知道极限是什么。我有多达20万份。长度json记录
谢谢你的建议。
CREATE INDEX emul_full_idx ON CDP_emultimedia (JsonData)
INDEXTYPE IS CTXSYS.CONTEXT
PARAMETERS ('section group CTXSYS.JSON_SECTION_GROUP SYNC (ON COMMIT)')
SQL> /
CREATE INDEX emul_full_idx ON CDP_emultimedia (JsonData)
ERROR at l
我们目前使用Oracle/PL/SQL和Oracle窗体WEB作为用户界面。
问题是,我们决定将UI从表单迁移到另一个UI (可能是HTML5 5/角.)。我们的系统架构是分层的,批处理代码将保持不变,我们所要做的就是从新技术中访问GUI Fa ade(仍有待选择)。问题是:该GUI Fa ade提供的所有数据(对Oracle窗体的粗略描述)都是在集合中构造的,如下所示:
TYPE tp_rc_cod IS RECORD(
-- Return code
cd_return NUMBER(2),
-- Name
cd_name some_table.name%TYPE
);
TYPE
测试用例如下:
CREATE OR REPLACE PROCEDURE TEST IS
BEGIN
APEX_JSON.OPEN_OBJECT();
APEX_JSON.CLOSE_OBJECT();
END;
我从从APEX的SQL命令或SQL脚本运行它的or中得到一个500错误。我不确定这里是否还需要其他的东西,或者推荐的是,不要在过程中使用APEX_JSON。我希望有人能插话。
只是为了澄清:我在Oracle实例上运行它,这在前提实例中似乎运行得很好,但这里不行。
编辑1
我已经尝试过类似于额尔基·努希的回答,但没有结果。我甚至认为我的代码是错误的,并尝试了他的,但它也没
我在Oracle的Post base rest API中使用了一个过程,我从json有效负载中捕获数据,解析成plsql类型,并插入到表中,而不需要对输入数据进行任何验证或处理。我想在ID列的基础上插入记录,如果ID已经存在,它应该更新整个记录。以下是我的代码 CREATE OR REPLACE PROCEDURE PROCESS_SF_INV_ORACLE_T (p_data IN BLOB)
AS
TYPE t_hdr_tab IS TABLE OF XX_SF_ORACLE_INVOICE_T%ROWTYPE;
l_hdr_tab t_hdr_tab := t
让我解释一下我的情况,这样你就能更好地理解我的问题了。我们需要从一组具有特定格式的表创建JSON文件。我想使用APEX_JSON是因为它很容易,但是我有一个内存问题,因为json文档生成了500万条记录。实际上,当我通过应用rownum过滤器来减少记录数量时,这个过程就可以工作了。但是,当查询试图创建具有总记录量的json时,我得到了一个PL-SQL数字错误,这基本上是内存溢出。
我最初的JSON查询如下:
DECLARE
l_cursor SYS_REFCURSOR;
BEGIN
for l_hdr_row in (select FILENAME, REPORT_DATE, DOM
这个问题不是的重复,因为只有当查询不是变量时,给定的答案才有效。
下面的查询工作正常,但结果保存在xml文件中。
SELECT XMLTYPE.createXML (DBMS_XMLGEN.getxml ('select 2 as a from dual')) FROM DUAL;
它可以工作,但我只能在oracle>19中使用宏。(因为宏)
with FUNCTION f_test return varchar2 SQL_MACRO is
query VARCHAR2(100) := 'select 1 a from dual';
ret
我定义了以下存储过程:
CREATE OR REPLACE PROCEDURE NOTIFY_INSERT (
FLAG IN VARCHAR2,
MESSAGE IN OUT CLOB,
SEQ_NO OUT NUMBER
)
AS
BEGIN
...
END;
现在,我试图在JDBC中调用这个存储的proc。但是,我得到了一个例外,上面写着"java.sql.SQLException: Parameter“。这是从线上提出来的
call.execute();
我猜这与第二个参数有关,它是一个CLOB。
,有人知道我做错了什么吗?
谢谢你的帮助。
Connection
我有一个用Laravel php框架开发的应用程序。我使用下面的包来处理我的oracle数据库。
我在oracle中有以下函数:
function my_func(uid in number, json in out nocopy clob) return number is
在php中我称之为
$result = '';
$pdo = DB::connection('oracle')->getPdo();
$stmt = $pdo->prepare("begin :result := my_func(:uid, :json); end;
我有个不寻常的情况。编码输出包含在每个字符之间有空格的json。
{ " f o r m " : { " s a m p l e F i e l d " : " s a m p l e v a l u e " } }
我们有一个spring应用程序,并向我们的一个控制器执行POST请求。POST请求中的字段由请求参数在POJO中填充。从我们的日志中我们可以看出字母之间没有空格。我们将POJO直接传递给服务类中的Gson共享实例(许多请求&石英后台线程使用此实例)。Gson转换器变量实例化如下
Gson gsonMaker = new Gs
我正在使用PHP向Oracle数据库中插入数据。有一个数据类型为CLOB的表字段,但它允许插入最多4000个字符。我在Google上搜索了一下,发现PL/SQL可以在CLOB字段中插入4000多个字符。然后我计划使用Oracle触发器来解决我的问题。我的计划是用PLSQL insert替换PHP insert查询。
create or replace
TRIGGER EXTEND_CLOB
BEFORE INSERT ON T_SESSIONS
for each row
BEGIN
insert into t_sessions (id,data,expires) values ( :ne