2016-08-08 5 views
1

У меня есть следующая хранимая процедура или функция, определенная в моей базе данных Postgresql:хранимой процедуры для вставки данных в Postgresql

CREATE OR REPLACE FUNCTION insert_val(int) 
    $body$ 
    BEGIN 
     FOR i IN 1..10 LOOP 
     insert into test (val) 
     values($23); 
     END LOOP; 
    END; 
    $body$ Language 'plpgsql' VOLATILE; 

Я просто хочу, чтобы вставить эти данные внутри цикла, но я получаю всегда эту ошибку:

Syntaxfehler bei »begin«

Возможно, я что-то пропустил в своей функции?

ответ

1

Я не понимаю, сообщение об ошибке, так как это не на английском языке, но я вижу несколько проблем в коде

CREATE OR REPLACE FUNCTION insert_val(IN val int) RETURNS VOID AS 
$body$ 
    BEGIN 
     FOR i IN 1..10 LOOP 
     insert into test (val) 
     values($23); 
     END LOOP; 
    END; 
    $body$ Language 'plpgsql' VOLATILE; 

Вы отсутствовали возвращаемый тип, вы отсутствовали AS и вы забыли для обозначения аргумента.

+0

Привет THX за ваш ответ, вы были правы, я туман, Возвращает Пустоту как. Я выполнил эту функцию, и на этот раз я не получил никаких ошибок, но также не повлиял на строку в тесте таблицы, я имею в виду, что ничего не вставлял. Вы можете мне помочь? P.S: Ошибка, которую я получил, просто означает синтаксическую ошибку в $ body $, извините за не перевод –

+0

, и это не приведет к созданию строки в таблице, пока вы ее не назовете! 'select insert_val (1)' например! – e4c5

+0

Спасибо за совет –

1

Вы забыли

RETURNS void AS 

между первой и второй линии.

Но это только позаботится о синтаксисе. $23 явно ошибочно, так как нет 23 аргументов функции. Возможно, вы имели в виду $1?

+0

Привет, да, я добавил уже значения для вставки: значения ($ 1, $ 2, $ 3, $ 4, $ 5, $ 6, $ 7, $ 8, $ 9, $ 10). Я исправил уже синтаксическую ошибку RETURNS void AS, но я до сих пор не получаю правильный результат. –

+0

Объясните свою проблему. –

Смежные вопросы