如果我有两个很长的字符串VARCHAR2,是否可以通过简单的方法或算法将其复制或移植到PL / SQL进行比较,然后插入标记(即,在网页中呈现时将突出显示差异)。
例如:
BEGIN
DBMS_OUTPUT.put_line(
markup_differences
(in_old => 'Hello world, this is your captain speaking.'
,in_new => 'Hello WORLD, this is not your captain.'
,in_preins => '<ins>'
,in_postins => '</ins>'
,in_predel => '<del>'
,in_postdel => '</del>'
));
END;
Run Code Online (Sandbox Code Playgroud)
预期产量:
Hello <del>world</del><ins>WORLD</ins>, this is <ins>not</ins> your captain
<del>speaking</del>.
Run Code Online (Sandbox Code Playgroud)
注意,这表明“ world”已更改为“ WORLD”,插入了“ not”,并且已删除了“ speaking”。
背景:我的目的是比较两个最相似的HTML片段,并用高亮标记它们以在浏览器中显示。性能将不是优先事项。这是用于一次性应用程序的,所以我不是一个完美的解决方案。即使某事让我参与其中,总会有总比没有好-而且我还没有向客户承诺任何事情:)
另外,我可以轻松地将Javascript的简单解决方案轻松集成到Apex应用程序中。
我试过这个查询:
SELECT X,Y,Z,COUNT(*)
FROM TABLE1
GROUP BY X,Y,Z
Run Code Online (Sandbox Code Playgroud)
我的结果是:

但我需要以下结果:

我得到臭名昭着的无效数字Oracle错误.Hibernate发布了一个包含很多列的INSERT,我只想知道给出问题的列的名称.可能吗?
仅供参考,插入是这样的:
insert into GEM_INVOICE_HEADER
(ENDORSEE_ACCOUNT_ID, INVOICE_CODE, APPROVAL_ORGAN, APROVAL_DATE, APROVAL_REFERENCE, BALANCE_BASE_AMOUNT, BALANCE_DEDUCT_AMOUNT, BALANCE_TOTAL_AMOUNT, BALANCE_VAT_AMOUNT, BALANCE_VAT_DED_AMOUNT, BALANCE_VAT_NOT_DED_AMOUNT, DESCRIPTION, SUPPLIER_INVOICE_NUMBER, INVOICE_DATE, RECEIPT_DATE, MEMO, VAT_INTRACOM, INVOICE_BASE_AMOUNT, INVOICE_VAT_AMOUNT, INVOICE_VAT_DED_AMOUNT, INVOICE_VAT_NOT_DED_AMOUNT, INVOICE_DEDUCT_AMOUNT, INVOICE_TOTAL_AMOUNT, VAT_EXEMPT, RECTIFICATION_SIGN, REASON, LOT, FILE_ID, RETAINED, INSTITUTION_ID, PERIOD_CODE, IS_RECTIFIED, DEFAULT_OFFBUDGET_ACCOUNT, OFFBUDGET_DOC_ID, PHASE_OF_ACCOUNTING, ACCOUNTED_OFF_BUDGET, CANCEL_DOC_ID, BUDGET_TYPE, INVOICE_TYPE, SOURCE_ID, STATE_ID, MANAGER_UNIT_ID, DOCUMENT_TYPE_CODE, ACCOUNTED_DOC_ID, ACCOUNTING_LIST, ENDORSEE_ID, PAYMASTER_ID, SUPPLIER_ID, SUPPLIER_ACCOUNT_ID, PAY_JUSTIFY_ID, PETTY_CASH_ID, DBOID)
values
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, …Run Code Online (Sandbox Code Playgroud) 假设我的查询效果不佳.你通常如何进行sql优化?我应该在查询执行计划中看到的第一件事是什么?有关于此的好文章或书吗?
我试图将全名从一页传递到另一页。
但是当我在文本字段中输入“Tyler, Brown”并重定向到下一页时。
剩下的值变成了“泰勒”
什么 apex 不允许在页面项的值中使用逗号?
有没有办法解决这个问题?
我试图弄清楚如何在不使用触发器的情况下轮询对 Oracle 表所做的更改。我目前关心的唯一变化是新的/插入的记录。任何建议将不胜感激。
我也真的不想使用其他表来跟踪已更改的内容。
谢谢!
秒
我需要一个在oracle中为存储过程创建错误日志文件的示例.请给我一个表创建和存储过程创建和错误日志创建的示例.
提前致谢
编辑(其他问题的相关信息)
假设有一个存储过程.当我执行该存储过程时,可能会发生一些预期的错误/异常,因此我需要创建一个错误日志表,其中每当我执行存储过程时,所有错误都将自动存储.
例如,如果某些列不允许空值,但用户输入空值,则应生成该错误,并将其存储在错误日志表中.
SQL> select to_timestamp('2010-12-14:09:56:53') - to_timestamp('2010-12-14:09:56:46') from dua
l;
select to_timestamp('2010-12-14:09:56:53') - to_timestamp('2010-12-14:09:56:46') from dual
*
ERROR at line 1:
ORA-01843: not a valid month
SQL> select to_date('2010-12-14:09:56:53') - to_date('2010-12-14:09:56:46') from dual;
select to_date('2010-12-14:09:56:53') - to_date('2010-12-14:09:56:46') from dual
*
ERROR at line 1:
ORA-01861: literal does not match format string
Run Code Online (Sandbox Code Playgroud)
做正确的方法是什么?
2010-12-14:09:56:53
minus
2010-12-14:09:56:46
Run Code Online (Sandbox Code Playgroud)
在Oracle SQL中?
SELECT *
FROM TAB1
LEFT JOIN TAB2 ON TAB2.ID_TAB1 = TAB1.ID
JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3;
Run Code Online (Sandbox Code Playgroud)
和
SELECT *
FROM TAB1
LEFT JOIN (SELECT *
FROM TAB2
JOIN TAB3 ON TAB3.ID = TAB2.ID_TAB3) T
ON T.ID_TAB1 = TAB1.ID;
Run Code Online (Sandbox Code Playgroud) CREATE TYPE nums_list AS TABLE OF NUMBER;
Run Code Online (Sandbox Code Playgroud)
oracle的嵌套表中可能的最大行数是多少?
UPDATE
CREATE TYPE nums_list AS TABLE OF NUMBER;
CREATE OR REPLACE FUNCTION generate_series(from_n NUMBER, to_n NUMBER)
RETURN nums_list AS
ret_table nums_list := nums_list();
BEGIN
FOR i IN from_n..to_n LOOP
ret_table.EXTEND;
ret_table(i) := i;
END LOOP;
RETURN ret_table;
END;
SELECT count(*) FROM TABLE ( generate_series(1,4555555) );
Run Code Online (Sandbox Code Playgroud)
这给出了错误: ORA-22813 operand value exceeds system limits, Object or Collection value was too large
oracle ×10
sql ×6
plsql ×3
database ×2
c# ×1
left-join ×1
logging ×1
nested-table ×1
optimization ×1
ora-01722 ×1
oracle-apex ×1
oracle10g ×1
oracle11gr2 ×1
oracle12c ×1