如何修复 PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -
Posted
技术标签:
【中文标题】如何修复 PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -【英文标题】:How to fix PL/SQL: ORA-00932: inconsistent datatypes: expected CLOB got - 【发布时间】:2016-01-04 08:15:32 【问题描述】:我做了这个 pl sql 函数来检索 xml 格式的 oracle 数据。 但我得到了这个错误: PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -
这是我的 pl sql 代码:
create or replace PACKAGE PAYROLL AS
FUNCTION get_all_payroll_transactions return clob;
END PAYROLL;
FUNCTION get_all_payroll_transactions return clob IS
ret clob;
BEGIN
SELECT XMLElement( "transaction", //this line shows error
XMLElement("salary_year", SALYR),
XMLElement("salary_month", SALMT),
XMLElement("employee_id", EMPID),
XMLElement("department_code", DPTID),
XMLElement("salary_head", SALHD),
XMLElement("description", DESCRP),
XMLElement("amount", ALAMT),
XMLElement("operator_id", OPID),
XMLElement("transaction_date", TRADT)
) AS clob into ret FROM PAYROLLFILE;
COMMIT;
RETURN '<result><status affectedRow='||ret||'>success</status></result>';
EXCEPTION
WHEN OTHERS THEN
RETURN '<result><status>Error</status></result>';
END get_all_payroll_transactions;
我认为可能存在一些 clob 、 xml cast 转换问题。 请帮助我。谢谢
【问题讨论】:
这类似于您的earlier question。而且你似乎仍然有同样的问题。 是的,请帮助@Tim Biegeleisen 我认为你在尝试投射时走在正确的轨道上,但括号不应该在最外面的XMLElement
周围吗?
@Tim Biegeleisen 你能给我看看吗?
【参考方案1】:
与其尝试强制转换,为什么不选择一个 XMLTYPE 然后使用 .getClobVal() 返回值?例如:
FUNCTION get_all_payroll_transactions return clob IS
lXml xmltype;
BEGIN
SELECT XMLElement( "transaction",
XMLElement("salary_year", SALYR),
XMLElement("salary_month", SALMT),
XMLElement("employee_id", EMPID),
XMLElement("department_code", DPTID),
XMLElement("salary_head", SALHD),
XMLElement("description", DESCRP),
XMLElement("amount", ALAMT),
XMLElement("operator_id", OPID),
XMLElement("transaction_date", TRADT)
) into lXml FROM PAYROLLFILE;
RETURN '<result><status affectedRow='|| lXml.getClobVal() ||'>success</status></result>';
EXCEPTION
WHEN OTHERS THEN
RETURN '<result><status>Error</status></result>';
END get_all_payroll_transactions;
【讨论】:
以上是关于如何修复 PL/SQL:ORA-00932:不一致的数据类型:预期的 CLOB 得到了 -的主要内容,如果未能解决你的问题,请参考以下文章
与 GROUP BY 子句一起使用时,如何修复“ORA-00932:不一致的数据类型:预期 - 得到 CLOB”?
ORA-00932: 不一致的数据类型: 预期 - 得到 - ORA-06512:
ORA-00932: 不一致的数据类型: 预期 - 得到 CLOB