All
Я очень плохо знаком с хранимыми процедурами в целом, но я особенно борюсь с теми, что в Oracle. Я создал очень простой пример того, что я пытаюсь выполнить, и я все еще получаю ту же ошибку с этой упрощенной версией.
Пример хранимой процедуры выглядит следующим образом:
CREATE OR REPLACE PROCEDURE ashish_test
AUTHID CURRENT_USER IS
BEGIN
DECLARE
v_tab VARCHAR2(50);
v_strSQL VARCHAR2(50);
BEGIN
v_strSQL := 'SELECT * FROM :1';
v_tab := 'ex.emp';
EXECUTE IMMEDIATE v_strSQL USING v_tab;
END;
END;
Когда я вызываю вышеуказанную хранимую процедуру, используя CALL ashish_test()
, я получаю:
Сообщение об ошибке http://web1.twitpic.com/img/12831839-06a3ea536df5d5a0a839eb83d9e59d25.4a3936b8-scaled.jpg
Исходя из этой статьи (см. Пример 7-1), ключевое слово USING
должно заменить пронумерованный заполнитель (:1
) в v_strSQL
значением, хранящимся в v_tab
. Тем не менее, я получаю неверную ошибку таблицы. Я предполагаю, что это потому, что EXECUTE IMMEDIATE
по какой-то причине не может заменить заполнитель значением, но я не уверен, почему это так. Кто-нибудь знает, если я делаю что-то глупое здесь?
Я запускаю это на базе данных Oracle 10g и использую PL / SQL Developer.