我使用 hs, dg4odbc 从 oracle 查询 mysql。从甲骨文查询选择 mysql 是可以的,但我的更新 sql 不起作用。
Mysql 数据库版本 5.6.23、Oracle 数据库版本 12c 和我的更新 sql 是:
BEGIN
UPDATE "user"@mysql
SET "avatar" = 'http://...abc.png'
WHERE "username" = 'abc';
COMMIT;
END;
错误 ORA-02070:数据库 xxx 不支持此上下文中的SYS_OP_C2C或 ORA-02070:数据库 xxx 在此上下文中不支持某些功能
我记得我使用的方法更新工作得很好,但现在不起作用。
请帮我使用 dg4odbc 从 oracle 调用更新 mysql
我找到了问题的答案。
DECLARE
c INTEGER;
nr INTEGER;
BEGIN
c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@mysql;
DBMS_HS_PASSTHROUGH.PARSE@mysql(c,
'UPDATE user SET avatar=? WHERE username=?');
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@mysql(c,1,'http://...abc.png');
DBMS_HS_PASSTHROUGH.BIND_VARIABLE@mysql(c,1,'abc');
nr:=DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@mysql(c);
DBMS_OUTPUT.PUT_LINE(nr||' rows updated');
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@mysql(c);
END;