Добрый день!
В Amazon Redshift действительно реализованы хранимые процедуры, и они поддерживают язык PL/pgSQL. Однако, процедура действительно не создаётся с помощью команды `CREATE FUNCTION`, и вам нужно использовать команду `CREATE PROCEDURE`.
Если DBeaver автоматически заменяет `CREATE PROCEDURE` на `CREATE FUNCTION`, это может быть связано с настройками принятых в DBeaver стандартов отображения или с тем, как он интерпретирует SQL.
Вот несколько шагов, как вы можете внести изменения в процедуру без необходимости каждый раз её удалять и заново создавать:
1. **Используйте команду DROP PROCEDURE**: Если у вас возникают проблемы с изменением существующей процедуры, вы можете использовать команду `DROP PROCEDURE`, чтобы удалить её, а затем создать новую с обновлённым кодом. Например:
```sql
DROP PROCEDURE IF EXISTS your_procedure_name;
```
2. **Используйте `CREATE OR REPLACE PROCEDURE`**: Если вы используете версию Amazon Redshift, которая поддерживает `CREATE OR REPLACE PROCEDURE`, вы можете использовать эту конструкцию. Это позволит вам заменить существующую процедуру без предварительного удаления:
```sql
CREATE OR REPLACE PROCEDURE your_procedure_name (parameters)
LANGUAGE plpgsql
AS $$
BEGIN
-- ваш код здесь
END;
$$;
```
3. **Проверьте настройки DBeaver**: Проверьте, не добавлены ли в DBeaver настройки, которые могут ошибочно интерпретировать команды для Redshift. Возможно, вам стоит обновить настройки подключения или использовать другой SQL редактор для выполнения вашей процедуры (например, SQL Workbench/J или сам интерфейс AWS Redshift Query Editor).
4. **Проверьте документацию и ограничения**: Убедитесь, что в версии Amazon Redshift, которую вы используете, реализованы все необходимые функции для работы с хранимыми процедурами.
Надеюсь, это поможет вам решить вашу проблему заполнения или изменения процедур в Amazon Redshift. Если проблема сохраняется, вы можете обратиться в поддержку DBeaver или в сообщество Amazon для получения дополнительных рекомендаций.