错误消息:查询没有结果数据的目的地

Error Message : Query has no destination for result data

我是 postgre 新手SQL。我正在尝试将 SQL store procedure 转换为 postgreSQL store function. 我试过 Like below store function created successfully 但是当我尝试执行时,我收到以下错误消息。我没有找到需要替换的地方 PERFORM.

ERROR:  query has no destination for result data
HINT:  If you want to discard the results of a SELECT, use PERFORM instead.

SQL 存储过程

CREATE  PROCEDURE [dbo].[roomType]
    @intInstId int
AS
BEGIN
    SELECT 
        nClientRoomTypeID,sClientRTDesc,sClientRTName,sClientRTCode
    FROM 
        ClientRoomType
    WHERE 
        ClientRoomType.nInstID=@intInstId
    ORDER BY 
        ClientRoomType.sClientRTCode
END
GO

PostgreSQl 存储函数

CREATE OR REPLACE  FUNCTION roomType (int_inst_id int)
RETURNS VOID
AS $$
BEGIN
    SELECT 
        nclient_room_type_id,sclient_rt_desc,sclient_rt_name,sclient_rt_code
    FROM 
        clientroomtype
    WHERE 
        clientroomtype.ninst_id=int_inst_id
    ORDER BY 
        clientroomtype.sclient_rt_code;
END;
$$ LANGUAGE plpgsql;

我假设您正在尝试 return 使用您的函数查询结果。实际上,您不需要 plpgsql 语言,但如果您需要它来做其他事情,请使用以下语法:

CREATE OR REPLACE FUNCTION roomType (int_inst_id int)
RETURNS TABLE (res_nclient_room_type_id INT,res_sclient_rt_desc TEXT,res_sclient_rt_name TEXT, res_sclient_rt_code TEXT)
AS $$
BEGIN
    RETURN QUERY 
    SELECT 
        nclient_room_type_id,sclient_rt_desc,sclient_rt_name,sclient_rt_code
    FROM 
        clientroomtype
    WHERE 
        clientroomtype.ninst_id=int_inst_id
    ORDER BY 
        clientroomtype.sclient_rt_code;
END;
$$ LANGUAGE plpgsql;

如何使用?

SELECT * FROM roomType(1);

因为我没有你的数据,所以无法测试。但它遵循这个原则:

CREATE OR REPLACE FUNCTION f ()
RETURNS TABLE (b boolean, x int)
AS $$
BEGIN
    RETURN QUERY SELECT TRUE, 1;
END;
$$ LANGUAGE plpgsql;

SELECT * FROM f();

 b | x 
---+---
 t | 1
(1 Zeile)