You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写接收字符串参数、按货币类型转换金额并返回多行的SQL函数

语法错误说明

你编写的函数存在以下几处语法/逻辑问题:

  • 返回表结构定义错误:RETURNS TABLE payment_info 不符合SQL语法规范,使用TABLE返回结果集时必须明确定义每一列的列名和数据类型,不能直接指定自定义名称
  • 分支结构不完整:SQL中的CASE表达式必须以END关键字闭合,你的代码中缺少对应的闭合标记
  • 分支逻辑不符合SQL函数语法:纯SQL语言的函数不支持直接用CASE分支返回多个独立的SELECT结果集
  • 未实现货币单位拼接:你的伪代码要求转换后追加对应货币标识,原有尝试代码仅做了汇率乘法,没有拼接单位的逻辑
正确实现方案

推荐用更简洁的纯SQL语法实现,逻辑和你给出的伪代码完全对齐,执行效率更高:

CREATE OR REPLACE FUNCTION get_report(currency_type text) 
RETURNS TABLE (
    payment_id INT,
    rental_id INT,
    amount_with_currency TEXT
) AS $$
SELECT 
    payment_id, 
    rental_id,
    -- 直接在字段层做货币转换和单位拼接,保留2位小数符合货币显示习惯
    CASE currency_type
        WHEN 'EUR' THEN CONCAT(ROUND(amount * 1.16, 2), ' Euros')
        WHEN 'RMB' THEN CONCAT(ROUND(amount * 6.44, 2), ' RMB')
        ELSE CONCAT(ROUND(amount, 2), ' USD')
    END AS amount_with_currency
FROM payment;
$$ LANGUAGE sql;

函数调用方式

直接执行以下语句即可拿到对应货币转换后的结果:

SELECT * FROM get_report('EUR'); -- 传入EUR/RMB/USD即可

内容的提问来源于stack exchange,提问作者WHOATEMYNOODLES

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 16:36:03