gpt4 book ai didi

sql - 带有 ora-01744 INTO 的 PL/SQL oracle 函数

转载 作者:行者123 更新时间:2023-12-02 04:40:07 29 4
gpt4 key购买 nike

我在 myqsl 中有一组函数需要编写 oracle 版本。

在我遇到限制 1 问题之前一切顺利。我认为我对限制的查询是问题所在,但无法弄清楚出了什么问题。你能帮我一下吗?

MySQL版本

SELECT concat(fld_name, ' ', fld_surname) 
INTO info
FROM tbl_customer
WHERE fld_flat_id = flatId and fld_type = typeId
order by fld_own_date desc limit 1;

Oracle 版本(导致问题)

SELECT Q1.* 
FROM (
SELECT ROWNUM AS RWNR2, Q2.*
FROM (
SELECT (NAME || ' ' || SURNAME)
INTO info
FROM TB_CUSTOMER
WHERE FLAT_ID = flatId AND TYPE = typeId
ORDER BY OWN_DATE DESC
) Q2
WHERE ROWNUM <= 1
) Q1
WHERE Q1.RWNR2 > 0;

顺便说一下,我知道表名和字段是不同的,在此预览中值是正确的。

最佳答案

INTO子句必须在最外层 SELECT不是内在的。而且您不需要两层嵌套,一个派生表和一个 rownum <= 1就够了。

所以它应该是这样的:

SELECT full_name
INTO info
FROM (
SELECT (NAME || ' ' || SURNAME) as full_name
FROM TB_CUSTOMER
WHERE FLAT_ID = flatId
AND TYPE = typeId
ORDER BY OWN_DATE DESC
) Q2
WHERE ROWNUM <= 1;

请注意,如果内部选择未返回任何内容,它可能仍会失败并显示“未找到行”错误。

关于sql - 带有 ora-01744 INTO 的 PL/SQL oracle 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21014391/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com