Привет, я пытаюсь создать функцию для восстановления последовательности для синхронизации с идентификаторами таблицы, которые вышли из синхронизации с последовательностью. Функция выглядит следующим образом:Выполнить немедленную выписку вопроса - имя поля переменной и имя таблицы
create or replace
FUNCTION P_FNC_SEQUENCERESET(sourceTable IN VARCHAR2, idField IN VARCHAR2, seqname VARCHAR2) RETURN NUMBER
IS
ln NUMBER;
ib NUMBER;
maxId NUMBER;
newValue NUMBER;
diffValue NUMBER;
interimValue NUMBER;
sqlStmt VARCHAR2(2000);
BEGIN
-- Get the maximum of the id field
EXECUTE IMMEDIATE 'SELECT MAX(' || idField || ') INTO ' || maxId || ' FROM ' || sourceTable;
...code continues...
Мое понимание EXECUTE IMMEDIATE заявление наводит меня на мысль, что это должно быть возможно, однако при выполнении я получаю эту ошибку:
ORA-00936: missing expression
ORA-06512: at "PSALERT_ADMIN.P_FNC_SEQUENCERESET", line 16
ORA-06512: at line 11
Я пропустил SELECT Max ('|| элемент из исходного сообщения. Но ваши ответы все еще на месте. Очень признателен. –
@PaulJohnson Я скопировал выбор из вопроса - может быть, вопрос был отредактирован? Или это было просто для поощрения внимательного чтения ;-) – sers