簡體   English   中英

Oracle SQL 加變量賦值使用CASE

[英]Oracle SQL Plus variable value assignment using CASE

我想將 V_PROFILE 變量設置為由 Oracle SQL Plus 中的 V_USERID 變量的值確定的值。 數據庫版本 12.1.0.2

下面的代碼返回正確的答案,但我需要設置一個變量而不是返回文字答案。

def V_PROFILE=''
def V_USERID='USER_KCH'

select 
CASE substr('&V_USERID',1,1)
    WHEN 'U' THEN
          'USER_PROFILE'
    WHEN 'S' THEN
          'SERVICE_PROFILE'
    ELSE  'NO PROFILE'
END
from dual;

假設您在 SQLPLus 中執行此操作,我相信您可以執行以下操作:

COLUMN column_name NEW_VALUE variable_name

在您的情況下,您需要為查詢中的選定列添加別名,然后執行

COLUMN alias NEW_VALUE v_profile

(希望我能正確記住語法。)

Oracle SQL 加變量賦值使用CASE

下面的代碼將 V_PROFILE 變量設置為由 Oracle SQL Plus 中的 V_USERID 變量的值確定的值。 數據庫版本12.1.0.2以下代碼集

def V_PROFILE=''
def V_USERID='USER_KCH'
def V_USERID='SERVICE_KCH'
def V_USERID='OTHERVALUE'

COLUMN PROFILE NEW_VALUE V_PROFILE NOPRINT

select 
    CASE substr('&V_USERID',1,4)
       WHEN 'USER' THEN
            'USER_ACCOUNTS_PROF'
       WHEN 'SERV' THEN
            'SERVICE_ACCOUNTS_PROF'
       ELSE 'DEFAULT'
    END as profile
from dual;

DEFINE V_PROFILE       = "USER_ACCOUNTS_PROF" (CHAR)
DEFINE V_PROFILE       = "SERVICE_ACCOUNTS_PROF" (CHAR)
DEFINE V_PROFILE       = "DEFAULT" (CHAR)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM