2016-10-05 4 views
0

В разделе «Параметры отчета» у меня есть V_ORG_NAME с указанием названия организации, в которой выполняется отчет. Я пытаюсь получить вывод для имени поставщика под V_VENDOR_NAME. Я не уверен, что это правильный способ добавить второй оператор IF. Я считаю, что моя проблема подпадает под этот раздел моего кода, но я не уверен, как изменить: IF '&1' IS NOT NULL Это ошибка выхода в Oracle:Невозможно получить вывод в инструкции 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

Кажется, вы сбиваете с толку переменные перестановки и переменные замещения.

Переменная Bind - переменная типа 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^