错误消息:查询没有结果数据的目的地
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)
我是 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)