2016-10-05 4 views
0

--Report Parameters 아래에 보고서가 실행되는 조직 이름이 표시된 V_ORG_NAME이 있습니다. 나는 V_VENDOR_NAME 아래의 공급 업체 이름에 대한 출력을 얻으려고합니다. 이 두 번째 문을 추가하는 올바른 방법인지 확실하지 않습니다. IF 문. 나는 내 문제는 내 코드의이 부분에 해당 생각하지만, 내가 편집하는 방법을 잘 모르겠어요 : 이것은 오라클의 에러 출력은 IF '&1' IS NOT NULL :공용체가있는 SELECT 문에서 출력을 가져올 수 없습니다. Oracle SQL r12

flex-direction: column; 

나는 아래이 부분은 작성하지 못했습니다하지만 믿고 편집하거나 추가하는 방법을 반드시 확인하십시오.

IF '&1' IS NOT NULL 
THEN 
    SELECT NAME 
    INTO V_VENDOR_NAME 
    FROM AP.AP_SUPPLIERS 
    WHERE VENDOR_ID = '&1'; 
END IF; 

:V_VENDOR_NAME := V_VENDOR_NAME; 

END; 
/

COLUMN V_ORG_ID noprint new_value V_ORG_ID 

COLUMN V_VENDOR_ID noprint new_value V_VENDOR_ID 

COLUMN V_ORG_NAME noprint new_value V_ORG_NAME 

COLUMN V_VENDOR_NAME noprint new_value V_VENDOR_NAME 

SELECT :V_VENDOR_ID   V_VENDOR_ID , 
    :V_ORG_ID    V_ORG_ID , 
    :V_ORG_NAME    V_ORG_NAME , 
    :V_VENDOR_NAME   V_VENDOR_NAME 
FROM SYS.DUAL; 

SELECT DATA FROM (
-- Report Header 
SELECT '1','INST Supplier Banking' DATA FROM DUAL 
UNION ALL 
-- Report Parameters 
SELECT '2','Vendor: '||'&V_VENDOR_NAME'||' Org: '||'&V_ORG_NAME' 
FROM DUAL 
UNION ALL 
-- Column Headers 
select '3','"Vendor Name"|"Supplier Number"|"Site Name"|"Bank Name"|"Bank Number"|"Branch Name"|"Branch Number"|"Account Name"|"Account Number"|"Description"|"Start Date"|"End Date"|"Creation Date"|"Created By"|"Last Update"|"Last Updated By"|"Address Line 1"|"Job Title"|"Email Address"' 
FROM DUAL 
+0

이 사용하는 어떤 도구 나 응용 프로그램에서인가? 나는'--Report parameters'가 무엇인지 모르며'flex-direction : column; '은 에러 메시지처럼 보이지 않습니다. –

+0

샘플 데이터와 원하는 결과를 게시하십시오. 질문을 향상시키기 위해 [ask]와 [mcve]를보십시오. – Aleksej

+0

- 보고서 매개 변수는 주석 처리 된 텍스트입니다. 일반적으로 앞으로 다른 개발자에게 메모를 제공하기 위해 추가됩니다. – Anthony

답변

0

바인딩 변수와 대체 변수가 혼동스러워 보입니다.

바인드 변수는 미리 정의해야하는 PLSQL 유사 변수이며 구문 분석 후에 SQL 문에 "바인딩"됩니다. 대체 변수는 구문 분석 전에 SQL 문으로 "대체"될 문자열입니다. 따옴표를 사용하면 열 이름으로 해석됩니다. 아래에서

는 예를 들어이 방법을 결합하여 찾을 수 :

VAR v_bind_name VARCHAR2(30) 

BEGIN 
    :v_bind_name := 'Brad'; 
END; 
/

SELECT :v_bind_name FROM sys.DUAL; 

COLUMN SUBST_NAME NOPRINT NEW_VALUE v_subst_name 

SELECT 'Pitt' AS subst_name FROM DUAL; 

SELECT :v_bind_name AS first_name, '&V_SUBST_NAME' AS last_name FROM sys.DUAL; 

SELECT * 
    FROM (-- Report Header 
     SELECT '1', 'INST Supplier Banking' data FROM DUAL 
     UNION ALL 
     -- Report Parameters 
     SELECT '2', 'Vendor: ' || :v_bind_name || ' Org: ' || '&V_SUBST_NAME' FROM DUAL 
     UNION ALL 
     -- Column Headers 
     SELECT '3', '"Vendor Name"|"Supplier Number"|"Site Name"|"Bank Name"|"Bank Number"|"Branch Name"' FROM DUAL);