Я изучаю Postgreslq, и у меня есть вопрос об этом примере кода:
CREATE OR REPLACE PROCEDURE CreateProject(
IN projectName VARCHAR(45),
IN projectYear SMALLINT)
LANGUAGE plpgsql
AS $$
BEGIN
-- PREPARE addProject (VARCHAR(45),SMALLINT) AS
-- INSERT INTO projects (projectName, year) VALUES ($1, $2);
-- EXECUTE addProject(projectName, projectYear );
EXECUTE 'INSERT INTO projects (projectName, year) VALUES ($1, $2)'
USING projectName,projectYear;
END $$;
Я пытаюсь написать хранимую процедуру, которая была бы безопасна от внедрения SQL. Исходя из Mysql, я знаю, что мне придется использовать подготовленное заявление с параметрами. Здесь, в Postgresql, он не позволяет (закомментированный код), с другой стороны, если я использую динамическую команду, это работает. Может ли кто-нибудь объяснить, почему в такой ситуации нельзя использовать подготовленное утверждение?