Перевод функций с T-sql на PL\pgsql

Существует база данных на MSSQL ее нужно перевести в Postgres. С переводом таблиц не было проблем, а вот с фунциями возникли проблемы. Вот код функции на MSSQL:

ALTER FUNCTION [dbo].[SupplierDebt]
(
@SupplierID int
)
RETURNS float
AS
BEGIN
Declare @Sum float;
Select @Sum = sum([Sum]) FROM SuppliersDebt WHERE
SupplierID = @SupplierID
IF @Sum IS NULL RETURN 0;
RETURN @Sum;
END

а вот я примерно пытался написать на Postgres:
create or replace function SuppliersDebt(mSupplierID int) RETURNS FLOAT AS $$

DECLARE Summ float;
BEGIN
SELECT Summ = Sum(Sum)
FROM SuppliersDebt where
SupplierID = mSuplierID
if Summ IS NULL then return 0;
else return Summ; end if;
end; $$
language 'plpgsql';

Просьба указать на ошибки. И как удостоверится что она работает правильно. С помощью select не получается проверить

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

На ошибки вам укажет сам

На ошибки вам укажет сам PostgreSQL при запуске функции
Почему не получается проверить с помощью SELECT?

На ошибки он не указывает при

На ошибки он не указывает при сохронение. Но когда запускаешь он же по сути должен выводить сумму по столбцу. а там нужно вводить значение.

Ну так вводите, в чём

Ну так вводите, в чём проблема-то? Например

SELECT SuppliersDebt(10);

=# select

=# select SuppliersDebt(10);
ERROR: query has no destination for result data
ПОДСКАЗКА: If you want to discard the results of a SELECT, use PERFORM instead.
КОНТЕКСТ: PL/pgSQL function "suppliersdebt" line 4 at SQL statement

Ну и?

Что непонятно в сообщении об ошибке?
Вы документацию читали на PL/pgSQL? Если бы читали, то увидели бы в одном из примеров

SELECT * INTO t2_row FROM table2 WHERE ... ;

Т.е. результат запроса заносится в переменную t2_row, а куда он заносится у вас?

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023