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';
我还有一个疑问。我无法使用同义词进行更新。它有什么语法吗?