创建一个函数可以变量输入,然后用case when来判断执行的查询zxf_rooms表的语句
时间: 2024-03-24 21:37:04 浏览: 67
好的,您可以使用以下的 SQL 查询语句来创建一个函数,实现您所需的功能:
```
CREATE FUNCTION get_room_info (room_type VARCHAR(255)) RETURNS TABLE(
room_id INT,
room_name VARCHAR(255),
room_price DECIMAL(10,2),
room_status INT
)
AS $$
BEGIN
RETURN QUERY
CASE
WHEN room_type = 'single' THEN
SELECT id, name, price, status FROM zxf_rooms WHERE type = 'single'
WHEN room_type = 'double' THEN
SELECT id, name, price, status FROM zxf_rooms WHERE type = 'double'
WHEN room_type = 'suite' THEN
SELECT id, name, price, status FROM zxf_rooms WHERE type = 'suite'
ELSE
SELECT id, name, price, status FROM zxf_rooms
END;
END;
$$ LANGUAGE plpgsql;
```
这个函数的输入参数是房间类型,返回的结果是一个表格,包含了查询结果的四个字段:room_id,room_name,room_price,room_status。在函数体内,使用了 CASE WHEN 语句来根据输入的房间类型来执行不同的查询。当输入的房间类型为 single 时,查询 zxf_rooms 表中 type 为 single 的房间信息;当输入的房间类型为 double 时,查询 zxf_rooms 表中 type 为 double 的房间信息;当输入的房间类型为 suite 时,查询 zxf_rooms 表中 type 为 suite 的房间信息;当输入的房间类型为空时,查询 zxf_rooms 表中所有房间的信息。
您可以根据需要修改函数的输入参数和返回结果。另外,这个函数使用的是 PostgreSQL 的 PL/pgSQL 语言编写的,如果您使用的是其他数据库,可能需要做一些修改。
阅读全文