我必须从TSQL移动我的数据库向PostgreSQL,我与Postgres的很新,我不发现我怎么能这个存储过程转换为功能的Postgres转换配合物TSQL程序到PostgreSQL
这我的T-SQL存储过程(我简化,就像我可以)2列式排
预期回报列表(十进制,VARCHAR)
CREATE PROCEDURE dbo.procSelectOpenDocument(
@ItemType_id decimal(38)
)
AS
IF @ItemType_id = 1
BEGIN
SELECT d.ID, d.OrderNumber
FROM dbo.Table1 d
END
IF @ItemType_id = 2
BEGIN
SELECT d.ID, d.OrderNumber2
FROM dbo.Table2 d
END
我的问题?
,如果你在TSQL
execute dbo.procSelectOpenDocument(1)
结果
ID | OrderNumber
1 | Some String value
execute dbo.procSelectOpenDocument(2)
结果
ID | OrderNumber2
1 | Some String value
至于你可以看到执行此,根据参数的列名更改的列表。
但这是行不通的!
CREATE OR REPLACE FUNCTION dbo.procSelectOpenDocument(IN p_ItemType_id bigint)
RETURNS TABLE
(
ID bigint
,Name varchar(150)
)
LANGUAGE 'plpgsql'
AS $function$
begin
if p_ItemType_id = 1 then
RETURN QUERY SELECT d.ID, d.OrderNumber FROM dbo.Table1 d;
end if;
if p_ItemType_id = 2 then
RETURN QUERY SELECT d.ID, d.OrderNumber2 FROM dbo.Table2 d;
end if;
end
$function$;
你想不想的列名更改后编辑? – Magnus
这在Postgres中不是(很容易)。解析SQL语句时,必须知道所有列的数量和名称。 –
是的,我想列名更改? –