首页 > 解决方案 > 在 PLSQL 中声明一个常量

问题描述

我在声明常量并在简单查询中使用它时遇到问题。

我已经尝试了许多在 PLSQL 中声明常量的变体,我在网上看到过,但我不断收到错误。我究竟做错了什么?

DECLARE 
    cobdate CONSTANT NUMBER(10) := 420181109;
BEGIN
    SELECT *
    FROM   THIS_TABLE dex
    WHERE  dex.close_of_business_key = &cobdate
    AND    dex.scenario_type_id = 'xxxx'
    AND    dex.s_counterparty_id = 'xxxx'
    AND    dex.run_type = 'xxxx'
    AND    dex.s_credit_line_type_id = 'xxxx'
END;

标签: sqloracleplsql

解决方案


您不应该将其&用作常量名称的前缀。

DECLARE 
   cobdate CONSTANT NUMBER(10) := 420181109;
   v_this_table this_table%rowtype;
BEGIN
   SELECT * into v_this_table
     FROM THIS_TABLE dex
    WHERE dex.close_of_business_key = cobdate
      AND dex.scenario_type_id = 'xxxx'
      AND dex.s_counterparty_id = 'xxxx'
      AND dex.run_type = 'xxxx'
      AND dex.s_credit_line_type_id = 'xxxx'
END;

此外,在 PL/SQL 中,您需要指定将结果集值存储在哪里(在我的示例中v_this_table)。

如果您的查询返回不止一行,您将需要一个游标来迭代它。


推荐阅读