使用PL / SQL函数返回查询来填充LOV

英格拉汉姆

长期潜伏者,第一次潜伏者。

我正在尝试使用PL / SQL函数填充LOV,这是第一次返回查询。我似乎无法正确使用语法,因为在验证时总是收到以下错误:

ORA-20999:分析返回的查询结果为“ ORA-20999:无法分析SQL查询!

ORA-06550:第2行,第145列:ORA-00923:在预期的位置找不到FROM关键字

以下PL / SQL函数:

DECLARE
EMPLOYEES NUMBER := 0;
QR varchar(4000);

BEGIN

SELECT COUNT(*) INTO EMPLOYEES FROM TS4_USER@TS_INFO_4.STT
WHERE MAN_QT = :APP_USER

IF EMPLOYEES = 0 THEN

QR :=     'select FIRST_NAME|| '' '' ||LAST_NAME d, select FIRST_NAME|| '' '' 
    ||LAST_NAME r 
     FROM TS4_USER@TS_INFO_4.STT 
     WHERE MAN_QT IN (SELECT QT FROM TS4_USER@TS_INFO_4.STT
            WHERE MAN_QT = (SELECT MAN_QT FROM TS4_USER@TS_INFO_4.STT 
                      WHERE QT = :APP_USER)) AND FL = ''ESA''';

ELSE

QR :=     'select FIRST_NAME|| '' '' ||LAST_NAME d, select FIRST_NAME|| '' '' 
    ||LAST_NAME r 
    from TS4_USER@TS_INFO_4.STT 
    where MAN_QT = :APP_USER';
END IF;

RETURN QR;
END

这很令人困惑,因为第2行是我声明区域的一部分,因此我不希望在这里出现FROM。我已对此问题进行了一些谷歌搜索,但很少提出。我是SQL和APEX的新手,所以我意识到我可能会忽略一些相当简单的内容。任何和所有帮助表示赞赏。

编辑:对不起格式

小脚丫

乍一看,查询使用错误的语法。您不能有两个SELECT,例如

select FIRST_NAME|| '' '' ||LAST_NAME d, select FIRST_NAME||
------                                   ------
here                                     here

本来应该

select FIRST_NAME|| ' ' ||LAST_NAME d, FIRST_NAME||

如您所知(如果确实如此),我将两个连续的单引号替换为一个。当然,它会失败,因为您正在编写动态SQL,并且必须“转义”单引号。但是,我建议您使用q引用机制,该机制更易于编写和维护。像这样:

QR := q'[select FIRST_NAME|| ' ' || LAST_NAME d, 
                FIRST_NAME|| ' ' || LAST_NAME r 
         FROM TS4_USER@TS_INFO_4.STT 
         WHERE MAN_QT IN (SELECT QT FROM TS4_USER@TS_INFO_4.STT
                          WHERE MAN_QT = (SELECT MAN_QT FROM TS4_USER@TS_INFO_4.STT 
                                          WHERE QT = :APP_USER
                                         )
                         ) 
           AND FL = 'ESA']';

不过,您不是使它复杂化了吗?不只是

select ...
from ts4_user
where qt = :APP_USER
  and fl = 'ESA'

此外,选择列表具有两个值:displayreturn我们通常显示名称并返回ID;两种情况下都使用“名称”。我并不是说这是错误的,只是有些不同。


因此:首先,请确保您编写的查询在SQL * Plus(或SQL Developer或使用的任何工具)中返回所需的值,然后将其移至Apex。


PS不要为格式化感到抱歉。付出一些努力,使您(和我们)的生活更简单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PL/SQL 中的“被使用”查询?

来自分类Dev

如何使用pl / SQL函数在LOV项目中列出数字(例如从1到20)?返回值与显示值相同

来自分类Dev

PL/SQL 查询列并在函数调用中使用它

来自分类Dev

pl sql也使用查询声明变量

来自分类Dev

在pl / sql中使用子查询块

来自分类Dev

使用外部联接的PL / SQL

来自分类Dev

使用Pl / SQL函数进行光线投射

来自分类Dev

使用select语句存储的PL / sql函数

来自分类Dev

使用select语句存储的PL / sql函数

来自分类Dev

从函数返回表。pl / sql

来自分类Dev

在PL \ pgSQL函数中使用几何?

来自分类Dev

使用PL / pgSQL条件而不创建函数

来自分类Dev

在PL / pgSQL函数中使用变量

来自分类Dev

使用PL / SQL删除SQL行

来自分类Dev

如何在SQL Plus / SQL-PL中使用迭代或作为函数运行查询?

来自分类Dev

使用PL / SQL删除大量记录

来自分类Dev

在PL \ SQL块中使用EXECUTE IMMEDIATE

来自分类Dev

使用PL / SQL HTTP上传BLOB文件

来自分类Dev

使用PL SQL读取XML元素的出现

来自分类Dev

PL / SQL在LOOPING中使用获取数据

来自分类Dev

在pl / sql中使用双竖线

来自分类Dev

在PL / SQL中的With子句之后使用for循环

来自分类Dev

使用Oracle PL / SQL减去时间

来自分类Dev

使用PL / SQL进行单选按钮验证

来自分类Dev

如何使用PL / SQL遍历JSON响应?

来自分类Dev

使用PL / SQL的工资总支出

来自分类Dev

以最佳方式使用PL / SQL求和

来自分类Dev

在PL \ SQL块中使用EXECUTE IMMEDIATE

来自分类Dev

使用PL / SQL查找缺少的关系