从 PL SQL 错误 ORA-28536 更新 mysql 表:处理异构服务初始化参数时出错



UPDATE查询,没有WHERE子句工作正常。但是当我使用 WHERE 子句时,它会显示错误

ORA-28536:

处理异构服务初始化参数
时出错 ORA-28507:数据字典视图 sys.hs$_class_init
ORA-02063 中的错误:MYSQL_ATULSSO
中的前 2 行 ORA-00604:递归 SQL 级别 1 时出错 ORA-02067:需要事务或保存点回滚 ORA-00604:递归 SQL 级别 1

时出错 ORA-02067:需要
事务或保存点回滚。

我的代码 :

DECLARE
A NUMBER(15) := 70;
B NUMBER(15) := 69;
BEGIN
UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET A.REQ_ID = B;
DBMS_OUTPUT.PUT_LINE('done11');
UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET A.REQ_ID = B WHERE A.REQ_ID = A;
COMMIT;
DBMS_OUTPUT.PUT_LINE('done');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('not done1');
COMMIT;
END;

输出: 完成1 未完成

我认为在子句可能是问题的地方使用表别名 A 尝试以下代码

DECLARE
A NUMBER(15) := 70;
B NUMBER(15) := 69;
BEGIN
UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET 
A.REQ_ID = B;
DBMS_OUTPUT.PUT_LINE('done11');
UPDATE ATL1_SSO_ACCESS_REQ_DETAILS A SET 
A.REQ_ID = B WHERE A.REQ_ID = 70;
DBMS_OUTPUT.PUT_LINE('done');
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('not done1');
END;

我得到了答案。 您可以从数据库链接进行更新。下面是语法

UPDATE "*DB_NAME*"."*TABLE_NAME*"@"*DB_LINK*"
SET "*DB_NAME*"."*TABLE_NAME*"."*COLUMN_NAME*"@"*DB_LINK*"= 'r2' 
WHERE "*DB_NAME*"."*TABLE_NAME*"."*COLUMN_NAME*"@"*DB_LINK*"='r1';

例:

UPDATE "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"@"mysql_atulsso.atul.co.in"
SET "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"."REQ_TYPE"@"mysql_atulsso.atul.co.in"= 'r2' 
WHERE "atul_sso"."ATL_SSO_ACCESS_REQ_DETAILS"."REQ_TYPE"@"mysql_atulsso.atul.co.in"='r1';

我还有一个疑问。我无法使用同义词进行更新。它有什么语法吗?

相关内容

  • 没有找到相关文章

最新更新