从pl更新mysql表sql错误ora-28536:处理异类服务初始化参数时出错

s71maibg  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(372)

没有where子句的更新查询工作正常。但当我使用where子句时,它显示错误
ora-28536:处理异类服务初始化参数时出错
ora-28507:数据字典视图sys.hs$\u class\u init出错
ora-02063:mysqlèu atulsso的前两行
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;

输出:done1 not done

epfja78i

epfja78i1#

我认为在where子句中使用表别名可能是一个问题,请尝试下面的代码

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;
vwkv1x7d

vwkv1x7d2#

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

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';

我还有一个疑问。我不能用同义词更新。有语法吗?

相关问题