У меня есть dblink, подключенный к mysql под названием times
.
У меня есть имя таблицы test_tblOOHA_Master
с одной записью (см. Изображение ниже).
Мой код:
DECLARE
num_rows INTEGER;
v_cursor BINARY_INTEGER;
nr INTEGER;
-- BINDING VARIABLES
header_id INTEGER;
flow_status_code VARCHAR(500);
qry VARCHAR(5000) ;
PROCEDURE test
AS
qry_select VARCHAR2(10000) := 'select
t1.header_id
,t1.flow_status_code
from test_tblOOHA_Master t1;';
BEGIN
v_cursor := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@times;
DBMS_HS_PASSTHROUGH.PARSE@times(v_cursor,qry_select);
WHILE DBMS_HS_PASSTHROUGH.FETCH_ROW@times(v_cursor) > 0
LOOP
DBMS_HS_PASSTHROUGH.GET_VALUE@times(v_cursor,1,header_id);
DBMS_HS_PASSTHROUGH.GET_VALUE@times(v_cursor,2,flow_status_code);
qry := 'UPDATE test_tblOOHA_Master
set flow_status_code= "'|| flow_status_code ||'"
where header_id = '|| header_id ||' ; ';
dbms_output.put_line(qry);
/*
qry variable generated the ff. string
UPDATE test_tblOOHA_Master
set flow_status_code= "TEST"
where header_id = 1603823 ;
*/
num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@times (qry); -- When I stored the string to a variable, It throws and error
num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@times (
'UPDATE test_tblOOHA_Master
set flow_status_code= "TEST"
where header_id = 1603823 ;'); -- But when I run the string directly, it works fine
END LOOP;
DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@times(v_cursor);
END test;
BEGIN
test;
COMMIT;
END;
/
Когда я запускаю код, я получаю эту ошибку:
В этой части я получаю сообщение об ошибке:
num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@times (qry); -- When I stored the string to a variable, It throws and error
Но при непосредственном запуске строки все работает нормально.
num_rows := DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@times (
'UPDATE test_tblOOHA_Master
set flow_status_code= "TEST"
where header_id = 1603823 ;'); -- But when I run the string directly, it works fine
Резюме: При использовании переменной qry
,Я получил ошибку.Но при использовании прямого строкового значения это работает.
Что не так с моей переменной?Пожалуйста, помогите.