PLS-00428:此 SELECT 语句中需要 INTO 子句

2023-12-14

我想将 Rownum 存储为变量,而不是使用昂贵的 Join。 我需要从 Select 语句中获取此值,因为 Rownum 在不同环境中会有所不同,因此它不能是代码中的文字字符串。

对于上下文,此查询在 Oracle Siebel CRM 模式上执行,并检索某些特定类型和属性的产品。

我尝试在 Toad 和 Oracle SQL Developer 中使用以下 SQL 代码,但是收到以下错误:

PLS-00428:此 SELECT 语句中需要 INTO 子句

这是代码

    DECLARE
    PROD_ROW_ID varchar(10) := NULL;
BEGIN
    SELECT ROW_ID INTO VIS_ROW_ID FROM SIEBEL.S_PROD_INT WHERE PART_NUM = 'S0146404';

    BEGIN
        SELECT rtrim(VIS.SERIAL_NUM) || ',' || rtrim(PLANID.DESC_TEXT) || ',' ||
               CASE
               WHEN PLANID.HIGH = 'TEST123'
               THEN
                   CASE
                   WHEN to_date(PROD.START_DATE) + 30 > sysdate
                   THEN 'Y'
                   ELSE 'N'
                   END
               ELSE 'N'
               END
               || ',' || 'GB' || ',' ||
               rtrim(to_char(PROD.START_DATE, 'YYYY-MM-DD'))
        FROM SIEBEL.S_LST_OF_VAL PLANID
            INNER JOIN SIEBEL.S_PROD_INT PROD
                ON PROD.PART_NUM = PLANID.VAL
            INNER JOIN SIEBEL.S_ASSET NETFLIX
                ON PROD.PROD_ID = PROD.ROW_ID
            INNER JOIN SIEBEL.S_ASSET VIS
                ON VIS.PROM_INTEG_ID = PROD.PROM_INTEG_ID
            INNER JOIN SIEBEL.S_PROD_INT VISPROD
                ON VIS.PROD_ID = VISPROD.ROW_ID
        WHERE PLANID.TYPE = 'Test Plan'
              AND PLANID.ACTIVE_FLG = 'Y'
              AND VISPROD.PART_NUM = VIS_ROW_ID
              AND PROD.STATUS_CD = 'Active'
              AND VIS.SERIAL_NUM IS NOT NULL;
    END;
END;
/

在PLSQL块中,select语句的列must be分配给变量,这在 SQL 语句中不是这样的。

第二个 BEGIN 的 SQL 语句没有 INTO 子句,这导致了错误。

DECLARE
   PROD_ROW_ID   VARCHAR (10) := NULL;
   VIS_ROW_ID    NUMBER;
   DSC           VARCHAR (512);
BEGIN
   SELECT ROW_ID
     INTO VIS_ROW_ID
     FROM SIEBEL.S_PROD_INT
    WHERE PART_NUM = 'S0146404';

   BEGIN
      SELECT    RTRIM (VIS.SERIAL_NUM)
             || ','
             || RTRIM (PLANID.DESC_TEXT)
             || ','
             || CASE
                   WHEN PLANID.HIGH = 'TEST123'
                   THEN
                      CASE
                         WHEN TO_DATE (PROD.START_DATE) + 30 > SYSDATE
                         THEN
                            'Y'
                         ELSE
                            'N'
                      END
                   ELSE
                      'N'
                END
             || ','
             || 'GB'
             || ','
             || RTRIM (TO_CHAR (PROD.START_DATE, 'YYYY-MM-DD'))
        INTO DSC
        FROM SIEBEL.S_LST_OF_VAL PLANID
             INNER JOIN SIEBEL.S_PROD_INT PROD
                ON PROD.PART_NUM = PLANID.VAL
             INNER JOIN SIEBEL.S_ASSET NETFLIX
                ON PROD.PROD_ID = PROD.ROW_ID
             INNER JOIN SIEBEL.S_ASSET VIS
                ON VIS.PROM_INTEG_ID = PROD.PROM_INTEG_ID
             INNER JOIN SIEBEL.S_PROD_INT VISPROD
                ON VIS.PROD_ID = VISPROD.ROW_ID
       WHERE     PLANID.TYPE = 'Test Plan'
             AND PLANID.ACTIVE_FLG = 'Y'
             AND VISPROD.PART_NUM = VIS_ROW_ID
             AND PROD.STATUS_CD = 'Active'
             AND VIS.SERIAL_NUM IS NOT NULL;
   END;
END;
/

参考

http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/static.htm#LNPLS00601 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/selectinto_statement.htm#CJAJAAIG http://pls-00428.ora-code.com/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PLS-00428:此 SELECT 语句中需要 INTO 子句 的相关文章

  • 从函数内的 SELECT 返回一个变量

    我正在尝试创建一个返回 varchar 的函数 其中一个字段形成一个选择 即聚合字段 我收到下一个错误 ORA 01422 exact fetch returns more than requested number of rows 我的理
  • 提高第一个查询的性能

    如果执行以下数据库 postgres 查询 则第二次调用要快得多 我猜第一个查询很慢 因为操作系统 linux 需要从磁盘获取数据 第二个查询受益于文件系统级别和 postgres 中的缓存 有没有一种方法可以优化数据库以快速获得结果fir
  • SQL 连接两个没有关系的表

    我有具有相同结构的不同表 我想通过其中一列将它们连接起来 问题是他们不共享该专栏中的信息 Table 1 Type A Name Value Table 2 Type B Name Value 结果表 在单列中 nameFromA name
  • SELECT max(x) 返回 null;我怎样才能让它返回0?

    运行以下命令时如何返回 0 而不是 null SELECT MAX X AS MaxX FROM tbl WHERE XID 1 假设没有XID 1的行 or SELECT coalesce MAX X 0 AS MaxX FROM tbl
  • mysql自动存储记录创建时间戳

    mysql 有什么方法可以在创建记录时自动将时间戳存储在记录行中 我试图使用时间戳 数据类型 和 current timestamp 作为默认值 但后来意识到每次更新记录时都会更新 我只需要一些可以存储创建时间戳的东西 Thanks Set
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 如何在 SQL Server 中连接

    我的数据库没有特定的列 因此我通过开关在查询中创建了一个列 我需要的是将此列与数据库中的另一列连接起来 select certificateDuration DurationType case when certificateDuratio
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 如何通过SQL查询检查是否有JSON函数?

    有SQL 2016 中的 JSON 函数 https learn microsoft com en us sql t sql functions json functions transact sql例如 JSON VALUE JSON Q
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • SELECT NULL、*、NULL、NULL 中令人困惑的 SQL 错误

    的背景我试图解决第四个现实任务 https www hackthissite org playlevel 4 在 hackthissite org 中 无法确切地弄清楚我应该在 URL 中注入什么 SQL 来检索电子邮件列表 浪费了几个小时
  • SQL WHERE 取决于星期几

    我需要检查不同日期的记录 具体取决于当前是一周中的哪一天 在周五 我需要它查看整个下周 直到下周日 在其他任何一天 它都应该检查当前周 直到下周日 我目前有以下内容 但由于语法错误而无法工作 是否可以做一个CASE WHEN里面一个WHER
  • 在 sqlplus 中执行 plsql 时将错误消息重定向到日志文件

    在 sqlplus 中执行 PL SQL 程序时 需要一种将 PL SQL 程序错误消息重定向到日志文件的方法 假设 PL SQL 程序名为send 2012 sql它有以下异常块 EXCEPTION WHEN NO DATA FOUND
  • Oracle 中仅在一列上不同

    我想在下表中使用不同的值 但仅在 PlayerID 列上使用 这就是我现在所拥有的 MATCHID PLAYERID TEAMID MATCHDATE STARTDATE 20 5 2 14 JAN 12 01 JUN 11 20 5 4
  • 如何将逗号分隔的列值与另一个表作为行连接

    我试图通过首先转换我正在成功执行的 SupplierId 列中的逗号分隔值来连接两个表 然而 当我尝试通过外键 DCLink 加入另一个带有供应商名称的表 Vendors 时 问题就出现了 这就是我的意思 原始表的 select 语句 SE
  • 在 MySQL 中将值设置为 NULL

    我想要一个值被设置为NULL如果我提交的表单中的文本框中没有输入任何内容 我怎样才能做到这一点 我试过插入 NULL 但这只是添加了这个词NULL进入现场 我不确定我应该为此提供什么代码 我只是编写一个 UPDATE 查询 不要放NULL更
  • 无法在 SQL Developer 中打开 View->DBA 菜单(已安装 Oracle 12C 标准版)

    我已经安装了Oracle 12C标准版 那里一切正常 我还连接了Oracle SQL Developer Client 4 0 从中我可以访问表 索引等 我试图通过单击 View gt DBA 菜单从 SQL Developer Clien
  • 如何使用单个查询对从另一个表检索的表列表进行 UNION?

    我有一个表 其中包含 PostgreSQL 中的表列表 id table 1 table1 2 table2 3 table3 我想从所有这些表的联合中进行选择 例如 伪代码 select from union select table f
  • 如果字符串包含数字,则仅返回字符串中的数字

    例如 字符串是abc123CD需要找到一种只读方法numbers在字符串中i e select a postgres function abc123CD Result 123 My try select substring abc123CD
  • 如何创建从表中最大值开始的 Oracle 序列?

    尝试在 Oracle 中创建一个以特定表中的最大值开始的序列 为什么这不起作用 CREATE SEQUENCE transaction sequence MINVALUE 0 START WITH SELECT MAX trans seq

随机推荐

  • 添加误差线以在 R 中的绘图上显示标准差

    对于每个X value 我计算了平均值Y 值和标准差 sd 每个 Y 值 x 1 5 y c 1 1 1 5 2 9 3 8 5 2 sd c 0 1 0 3 0 2 0 2 0 4 plot x y 如何使用标准差向绘图的每个数据点添加误
  • 无法从 pod 容器内部访问 kubernetes api

    我已经创建了 hashcorpVault 部署并配置了 kubernetes auth Vault 容器从 pod 内部调用 kubernetes api 进行 k8s 身份验证 该调用失败并显示 500 错误代码 连接被拒绝 我正在使用
  • 在表中启用和禁用 td

    td td
  • 如何使用 MUnit 在 Mule Flow 中模拟 Java 组件

    我正在尝试使用 MUnit 对我的一个子流程进行单元测试 我需要模拟一个自定义 Java 组件 但我无法这样做 我的子流程如下
  • 飞碟没有应用内部 CSS

    我在 struts2 操作中使用以下代码 使用飞碟将 HTML 转换为 PDF 它只是按原样打印样式代码 并不应用它 static String readFile String path Charset encoding throws IO
  • 使用本地文件中的背景图像进行绘图布局

    我有同样的问题 如所述这个问题 我希望我的绘图具有本地 png 文件的背景 Using 情节的例子 它使用来自网络的图像 有效 使用本地图像的路径 无论有或没有绝对路径 都不起作用 根据另一个问题的答案进行编码没有帮助 import bas
  • 如何在Canvas中专门绘制Shape

    我里面有一个形状Canvas 像这样
  • Safari 中如何允许跨域请求?

    我有从 localhost 运行的 webapp 因为调试 并且它发出跨域 AJAX 请求 我可以轻松地为 Chrome 设置标志 disable web security 并且 web 应用程序在 Chrome 中按预期工作 但我也需要为
  • MvvmCross - 从视图模型调用 Web 服务

    我是 MvvmCross 和 Android 开发的新手 我需要在视图模型中调用 POST 数据到 JSON Web 服务 然后 我需要在 UI 中显示 Web 服务的结果 我的视图模型的要点如下所示 public class MyView
  • 将网站的 URL 格式化为字符串,并在前面添加 http://

    我有一个评论系统 允许自动链接网址 我正在使用 cakephp 但解决方案更多的是 PHP 这就是正在发生的事情 如果用户输入完全限定的网址http or https 一切安好 但如果他们进入www scoobydoobydoo com它变
  • RequireJS:将路径设置为“忽略”

    我正在使用一个第三方库 通过 Bower 它声明了我不想要的依赖项 它只是样式 是否可以将该依赖项设置为 忽略 或某些此类值 e g define jquery dep i dont want function 在需要配置中 paths j
  • 多重继承 C++ 当基类共享相同的方法名称时,是否有一些限制?

    我以前从未在 C 中使用过多重继承 但我很好奇 因为我在一本书中看到了编织 bst 的实现 通过基类 List 和基类 BinarySearch 树的多重继承 现在我试图编一些愚蠢的例子来理解它是如何工作的 所以我想出了这个 class B
  • 如何在 PHP 中创建幻方?

    我想尝试用 PHP 创建一个魔方 即所有加起来等于相同值的数字网格 但我真的不知道从哪里开始 我知道创建幻方的许多方法 例如在固定位置开始 1 然后每次迭代都朝特定方向移动 但这并没有创建一个真正随机的魔方 而这正是我的目标 我希望能够生成
  • Java:在运行时检查类是否存在[重复]

    这个问题在这里已经有答案了 我正在开发一个依赖于第三方库的软件 由于许可协议 该库无法与软件一起提供 并且用户在启动程序时必须在本地拥有该库 有没有办法检查这个特定的库是否存在于类路径中并且可以加载 如果没有 我想提供一个对话框以允许用户指
  • 如何在 SQL Server 2008 中删除重复行?

    如何删除 SQL Server 2008 中的重复行 最简单的方法是使用 CTE 公用表表达式 当我有原始数据要导入时 我会使用这种方法 我清理它的第一件事是确保没有重复 我对每一行都有某种唯一的句柄 Summary WITH number
  • 如何将多个提交合并到另一个分支作为单个压缩提交?

    我有一个远程 Git 服务器 这是我想要执行的场景 对于每个错误 功能 我创建一个不同的 Git 分支 我继续使用非官方 Git 消息在该 Git 分支中提交代码 在顶级存储库中 我们必须使用官方 Git 消息针对一个错误进行一次提交 那么
  • 为什么 try except 块在 python 3.7 的 Visual Studio 代码中不起作用?

    实现 try except 块时 VS Code 无法识别指定的异常或与此相关的任何异常 前任 try x 1 0 except ZeroDivisionError print You cannot divide by zero 通过终端执
  • 从 contenteditable 填充并保存文本

    我正要开始写自己的富文本编辑器但需要知道是否可以填充文本区域以及如何保存 使用其中的数据 我目前正在使用 CKEditor 但它对于我想要的东西来说太笨重和太大 我将以此为基础 http jsfiddle net Kxmaf 6 我还需要对
  • 如何在自定义验证规则的 pass 函数中发送多个参数

    我正在实现一个自定义验证规则 该规则应该在自定义验证规则的传递函数中采用另一个带有属性和值的参数 当我们在编写自定义验证时实现 Rule 接口时 它不允许我们在 pass 函数中添加第三个参数 但我需要第三个参数 此外 如果有人能够指导我在
  • PLS-00428:此 SELECT 语句中需要 INTO 子句

    我想将 Rownum 存储为变量 而不是使用昂贵的 Join 我需要从 Select 语句中获取此值 因为 Rownum 在不同环境中会有所不同 因此它不能是代码中的文字字符串 对于上下文 此查询在 Oracle Siebel CRM 模式