2014-02-18 4 views
0

(PBSELECT 문을 포함하는) PowerBuilder 항목을 java로 변환하려고합니다. 나는 PBSELECT 문을 제외하고는 다른 것들에 꽤 편합니다.PBSELECT를 표준 SQL로 변환

아래의 PBSELECT 문을 표준 SQL formate로 변환하려고합니다.

PBSELECT 문 내의
PBSELECT(VERSION(400) 
TABLE(NAME="table_barcode") 
TABLE(NAME="table_barcode_attrib_map") 
TABLE(NAME="table_barcode_attribute") 
COLUMN(NAME="table_barcode.label_name") 
COMPUTE(NAME="IsNull(table_barcode_attrib_map.value,0) pacmed_valid")  
JOIN (LEFT="table_barcode.barcode_id" OP ="=" RIGHT="table_barcode_attrib_map.barcode_id" OUTER1 ="table_barcode.barcode_id")  
JOIN (LEFT="table_barcode_attrib_map.attribute_id" OP ="=" RIGHT="table_barcode_attribute.attribute_id" OUTER1 ="table_barcode_attrib_map.attribute_id") 
WHERE( EXP1 ="(~~"table_barcode~~".~~"barcode_id~~"" OP ="=" EXP2 =":as_barcode_id)" LOGIC ="and") 
WHERE( EXP1 ="table_barcode_attribute.attribute_name" OP ="=" EXP2 ="'PACMED VALID FLAG'")) 
ARG(NAME = "as_barcode_id" TYPE = string) 

, 나는 "~~ 패턴을 포함 WHERE 첫 OUTER1으로 절에 가입 할 수 이해하지입니다.

표준 SQL에 PBSELECT 변환 도와주세요. 매우 감사 어떤 도움.

+0

선택 DW의 이것을 그래픽 맛을 바랍니다. PB에서 SQL로 변환을 수행하도록 요청할 수 있습니다. 디자인 모드에서 데이터 윈도우에 접근 할 수 있습니까? 특정 DW를 변환해야합니까, 아니면 주어진 데이터 윈도우를 변환 할 수 있어야합니까? – Seki

+0

@Seki : 설계 모드에서 powerbuilder 데이터 윈도우에 액세스 할 수 없습니다. 나는 주어진 dataWindow를 찾고있다. – Sanjiv

+0

잘 모르겠지만 .pbl 파일이 있으면 PBL Peeper가 그 파일을 처리 할 수 ​​있습니다. – Slapout

답변

1

사람들은이 그래픽 SQL 인코딩에 대한 변환 루틴을 작성했지만 PowerBuilder 엔지니어링 스태프의 말에 따르면 올바르게 수행 할 수 없습니다. 변환은 데이터베이스 드라이버 및 연결 변환에 대한 특정 정보를 가져옵니다 매개 변수가 있으므로 하나의 조건에서 작동하는 변환 루틴 (예 : 하나의 데이터베이스 엔진)가 다른 서버에서 올바르게 작동하지 않을 수 있습니다.

Slapout은 의견 (감사합니다!)에서 내 도구 PBL Peeper이 도움이 될 수 있다고 제안합니다. 응용 프로그램에서 사용한 데이터베이스 연결 매개 변수가 필요합니다 (DBMS라는 속성에 대한 코드 또는 INI 파일 검색). 그런 다음 모든 데이터 윈도우 (Reports/DataWindow SQL)로 SQL을 덤프하거나 시간 (DW 객체/개체 보고서/데이터 윈도우 SQL 찾아보기/RMB). 특히 PowerBuilder가없는 경우 코드를 탐색하는 더 좋은 방법입니다. 당신이 변환하는 경우

BTW, 명심 :

  • 에서 DataWindow 암시 동적으로 될 수 삽입, 업데이트에 대한 사양을 포함하고
  • 데이터 윈도우 SQL (과에서 DataWindow의 다른 많은 특성) DELETE를 할 수있다 코드를 통해 런타임에 수정 됨
  • SQL 이외에도 많은 속성 (예 : X, Y, Width, Height ...)은 정적 값이 될 수 있으며 데이터베이스의 값에 따라 실행될 수있는 수식에서 파생됩니다 시간 메모리 변수 (예 : PowerScript의 변수) 또는 PowerBuilder가 액세스 할 수있는 다른 값 (요일, 화면 해상도 등)
  • 많은 속성이 상호 의존적입니다 (예 : Y 및 SlideUp)
  • DataWindow는 런타임에 처음부터 동적으로 생성 할 수 있으며이 구문은 코드로 생성하거나 파일이나 데이터베이스 열과 같은 모든 소스에서 가져올 수 있습니다 (PowerBuilder 라이브러리 (PBL)의 DataWindow 목록은 전체 그림이 아님)

나는 이보다 더 큰 문제 목록을 없애고 있지만 그 생각은 분명합니다. 당신의 업무를 과소 평가하지 마십시오.

행운을 빌어 요,

테리

0

내가 변환하려고합니다, 나는 그것을 바로

DECLARE @as_barcode_id NVarchar (max) 
-- Since I don't know argument that passed by the program so I set it as max -- 

SELECT table_barcode.label_name, 
     IsNull(table_barcode_attrib_map.value,0) AS pacmed_valid 
    FROM table_barcode LEFT OUTER JOIN table_barcode_attrib_map 
-- Frankly, I still not sure whether it should be LEFT OUTER JOIN OR RIGHT OUTER JOIN -- 
    ON table_barcode.barcode_id = table_barcode_attrib_map.barcode_id 
    LEFT OUTER JOIN table_barcode_attribute 
-- Frankly, I still not sure whether it should be LEFT OUTER JOIN OR RIGHT OUTER JOIN -- 
    ON table_barcode_attrib_map.attribute_id = table_barcode_attribute.attribute_id 
WHERE table_barcode.barcode_id = @as_barcode_id 
    AND table_barcode_attribute.attribute_name = IsNull(table_barcode_attrib_map.value,0)