Искам да изпълня pl/sql скрипт през терминал, но не мога да го накарам да работи. Първо проверява дали потребител съществува и ако съществува, копира данни от някаква таблица на този потребител.
Проблемът възниква, когато няма потребител - скриптът не работи, защото казва, че тази таблица или изглед не съществува и това означава, че по някакъв начин го компилира предварително, докато аз искам да се изпълнява ред по ред.
Ето го:
DECLARE
v_count INTEGER := 0;
BEGIN
SELECT COUNT (1) INTO v_count FROM SYS.DBA_USERS WHERE username = UPPER ('B');
if v_count = 0 then
DBMS_OUTPUT.put_line ('Fail');
else
insert into A.some_table (some_column)
select some_column from B.some_table
where some_column = "x";
end if;
END;
/
извежда грешка, че таблицата не съществува на ред select some_column from B.some_table
, защото макар тя наистина да не съществува (потребителят не съществува), скриптът всъщност няма да отиде там.