加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Oracle SQL Developer代码窗口中使用变量运行sql代码

发布时间:2020-12-12 13:48:05 所属栏目:百科 来源:网络整理
导读:我正在使用Oracle SQL Developer编写代码.我有一个简单的选择语句工作: SELECT CFS.CAE_SEC_ID,CFS.FM_SEC_CODE,CFS.LAST_USER_ID,case when 1 = 1 then sl.usbank_to_edit else case when 'ENTCB174' = CFS.last_user_id then sl.owner_to_edit else sl.t
我正在使用Oracle SQL Developer编写代码.我有一个简单的选择语句工作:
SELECT
      CFS.CAE_SEC_ID,CFS.FM_SEC_CODE,CFS.LAST_USER_ID,case 
          when 1 = 1 then
            sl.usbank_to_edit
          else
            case 
              when 'ENTCB174' = CFS.last_user_id then
                sl.owner_to_edit
              else
                sl.to_edit
            end
        end canEdit
    FROM
    CAEDBO.CAE_FOF_SECURITY CFS
    INNER JOIN caedbo.CAE_DATA_SET_ELEMENT CDSE_STAT 
        ON (CDSE_STAT.DATA_SET_ELEMENT_ID = CFS.APPR_STATUS)
    INNER JOIN caedbo.CAE_STATE_LOOKUP sl 
        ON (sl.object_state =  CDSE_STAT.data_set_element_id)
   where 
      cfs.CAE_SEC_ID in (3741,3744,3748,3752);

然而,我想添加一些变量,并引用语句中的变量,类似于下面,并在代码窗口中运行它.如何正确执行?

DECLARE 
  p_USBank_n NUMBER;
  p_user_id_c VARCHAR2(20);
BEGIN  
  p_USBank_n := 1; 
  p_user_id_c := 'ENTCB174';

    SELECT
      CFS.CAE_SEC_ID,case 
          when p_USBank_n = 1 then
            sl.usbank_to_edit
          else
            case 
              when p_user_id_c = CFS.last_user_id then
                sl.owner_to_edit
              else
                sl.to_edit
            end
        end canEdit
    FROM
    CAEDBO.CAE_FOF_SECURITY CFS
    INNER JOIN caedbo.CAE_DATA_SET_ELEMENT CDSE_STAT 
        ON (CDSE_STAT.DATA_SET_ELEMENT_ID = CFS.APPR_STATUS)
    INNER JOIN caedbo.CAE_STATE_LOOKUP sl 
        ON (sl.object_state =  CDSE_STAT.data_set_element_id)
   where 
      cfs.CAE_SEC_ID in (3741,3752);
END;

当我在一个sql窗口中运行它,我得到以下消息:

Error report:
ORA-06550: line 8,column 5:
PLS-00428: an INTO clause is expected in this SELECT statement
06550. 00000 -  "line %s,column %s:n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:
如果我正确阅读,我想你正在寻找 Oracle Substitution variables.

这将提示您每次输入值时,通过使用& val它会提示您@运行时

SELECT
      CFS.CAE_SEC_ID,CASE 
          when &p_USBank_n = 1 then
            sl.usbank_to_edit
          else
            CASE 
              when '&p_user_id_c' = CFS.last_user_id then
                sl.owner_to_edit
              else
                sl.to_edit
            end
        end canEdit
    FROM
    CAEDBO.CAE_FOF_SECURITY CFS
    INNER JOIN caedbo.CAE_DATA_SET_ELEMENT CDSE_STAT 
        ON (CDSE_STAT.DATA_SET_ELEMENT_ID = CFS.APPR_STATUS)
    INNER JOIN caedbo.CAE_STATE_LOOKUP sl 
        ON (sl.object_state =  CDSE_STAT.data_set_element_id)
   where 
      CFS.CAE_SEC_ID IN (3741,3752);

将其更改为&& var以使其保留该值,然后使用

UNDEFINE var

清除它

现在,您可以通过使用DEFINE来设置页面顶部(从而避免提示)

DEFINE XYZ = 5
DEFINE AAA = to_date('10/10/2010','mm/dd/rrrr')
DEFINE textString = AaBbCc

SELECT &&XYZ b,&&AAA a,'&&textString' textString
  from dual ;

  B                      A                         TEXTSTRING 
  ---------------------- ------------------------- ---------- 
  5                      10.OCT.2010 00:00         AaBbCc     
  --typing define will show you all the "defined" values 
define

  DEFINE XYZ = "5"
  DEFINE TEXTSTRING = "AaBbCc"
  DEFINE AAA = "to_date('10/10/2010','mm/dd/rrrr')"

双符号将“保留”该值,直到您启用它(见上文)或重新定义它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读