SQL 하나 자리 표시 자에 SQL 쿼리를 배치 할 수 있습니까?
Dec 15 2020
sql hana 자리 표시 자 에 sql 쿼리를 배치 할 수 있습니까?
다음 쿼리가 작동합니다.
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$', '2020-01-01'))
다음과 같은 것을 전달하려고합니다.
Select * From table1
('PLACEHOLDER' = ('$$IP_ShipmentDate$$',
Select TO_VARCHAR(min("some_date"),'YYYY-MM-DD') from Table2)
현재 Syntex 오류가 발생합니다.
답변
1 astentx Dec 21 2020 at 16:33
오류가 말했듯이 열보기 매개 변수에 대해 표현식이 지원되지 않습니다 Can't use column expression as column view parameter
.
그러나이를 계산하는 옵션이 있습니다.
- 매개 변수의 값이이 계산 된 뷰와 의미 상 관련이있는 경우 (예 : 일부 논리를 기반으로 계산되는이 뷰에 대한 일부 기본값이 필요함) 값을 계산하기 위해 하나의 출력 매개 변수가있는 저장 프로 시저를 생성하고 매개 변수 유형을 사용할 수 있습니다. 프로 시저 / 스칼라 함수에서 파생 됨 . 이 값을 프런트 엔드에서 조정할 수 있도록 입력 활성화 로 표시 할 수 있습니다 . 또는 계산 된 값이 사용자 입력을 기반으로하는 경우 입력 매개 변수에 대한 매개 변수 / 변수-> 프로 시저 / 스칼라 함수 섹션에서 계산보기의 입력 매개 변수에 프로 시저의 입력 매개 변수를 맵핑 할 수 있습니다 .
create procedure sp_dummy (
in dummy nvarchar(10) default '0',
out val nvarchar(10)
)
as begin
val = to_char(current_date, 'yyyymmdd');
end;


- 매개 변수 값이 계산보기와 관련이없고 계산보기를 사용하여 해당 값에 대한 일부 데이터를 가져 오는 경우 저장 프로 시저 / SQLScript 블록 의 결과 집합 기능 을 사용할 수 있습니다 . SQL 실행기가 SQL 문 구문 분석을 시도하지 않는 경우 (예 : SAP BO는
SELECT
일부 SP 이후 첫 번째 SQL 단어로 확인하므로이 방법은 유효하지 않음) 열 정의에 대한 메타 데이터로 결과 집합을 가져옵니다. 그런 다음 계산 논리를 래핑하는 추가 개체를 피할 수 있습니다.
결과 집합을 반환하려면 익명 블록에 정의 된 매개 변수가 없기 때문에 SELECT 문을 사용합니다.
do begin
declare lv_param nvarchar(100);
select max('some_date')
into lv_param
from dummy /*your_table*/;
select *
from "_SYS_BIC"."path.to.your.view/CV_TEST" (
PLACEHOLDER."$$P_DUMMY$$" => :lv_param
);
end;
RSPCLOGCHAIN
위에서 선언 한 프로 시저의 출력으로 필터링 된 테이블을 기반으로하는 계산 뷰를 사용하면
LOG_ID | DATUM | INPUT_PARAM | CUR_DATE
--------------------------+----------+-------------+----------
8FRV39X1O8814X6IJMLPI47PV | 20201221 | some_date | 20201221
C7S9EY3J0GYA76Y2S9CIA39QR | 20201221 | some_date | 20201221
35R8A3RFUG00EBY8MZQWJLIXF | 20201221 | some_date | 20201221
850MVHOJIKIDD7EVY6WFIYPZN | 20201221 | some_date | 20201221
1 LarsBr. Dec 16 2020 at 11:41
아니요, 지원되지 않습니다.
매개 변수 인터페이스는 문자열 전용입니다. SELECT 또는 표현식은 HANA에서 평가되지 않습니다.
동적 선택 매개 변수 (예 : 현재 날짜 또는 3 주 전 ) 를 얻으려면 저장 프로 시저를 통해 기본값 을 설정 하거나 클라이언트 (프런트 엔드) 도구에서 원하는 값을 계산하는 방법 을 살펴볼 수 있습니다 .