2014-12-23 3 views
0

Pro C를 사용하여 다음 쿼리를 실행하여 결과를 얻고 출력을 사용자에게 표시해야합니다. Pro C 동적 SQL 쿼리

나는 다음과 같은 코드 시도 :

int count=0; 
char query1[100]="select count(code) from customer where customer_type='a';"; 
EXEC SQL ALLOCATE DESCRIPTOR 'out' ; 
EXEC SQL PREPARE statement FROM :query1 ; 
EXEC SQL DESCRIBE OUTPUT statement USING DESCRIPTOR 'out' ; 
EXEC SQL SET DESCRIPTOR 'out' VALUE 1 TYPE = :data_type, 
    LENGTH = :data_len, DATA = :count ; 
EXEC SQL DECLARE c CURSOR FOR statement ; 
EXEC SQL OPEN c ; 
EXEC SQL FETCH c INTO DESCRIPTOR 'out' ; 
EXEC SQL GET DESCRIPTOR 'out' VALUE 1 :count = DATA; 
EXEC SQL CLOSE c ; 
printf("%-8d ",count); 

을하지만 난 얻을 출력 내가 적절한 출력을 얻기 위해 진행해야한다 어떻게 항상 0

입니까 ?? 누구나 pls을 도울 수 있습니다 ...

+0

int data_type = 4, data_len = 1; 또한 선언되어 있습니다 – Brijesh

+0

태그를 확인하십시오 : [태그 : proc]는 Pro-C가 아닙니다. 그리고이 질문이 MySQL을위한 것이라고 확신합니까? –

+0

감사합니다 .. 내가 태그를 변경했습니다 .. 어디 코드에서 잘못 가고 있어요 .. ?? 또는 나는 무엇을 놓치고 있는가 ??? – Brijesh

답변

0

눈에 띄지 않게 몇 가지 오류가있을 수 있습니다.

오류 점검을 위해 EXEC SQL WHENEVER를 사용하십시오.

나에게 뛰어 오는 한 가지는 query1 값의 끝에있는 세미콜론입니다. 올바르게 회상하면 Pro * c가 바코드로 표시됩니다.

0

가능한 경우가 아니면 Pro * C 동적 SQL (Oracle 동적 SQL 방법 4) 방법을 사용하지 말 것을 강력히 권장합니다.

이 방법을 사용해야하는 유일한 경우는 동적으로 생성 된 SQL을 사용할 때 사용되는 호스트 변수의 수를 모르는 경우입니다. 예 : SELECT 절에 몇 개의 열이 있을지 알 수 없습니다.

오라클 동적 SQL 방법 4를 사용한 본격적인 예제는 http://docs.oracle.com/cd/B28359_01/appdev.111/b28427/pc_15ody.htm#i7419에서 찾을 수 있습니다.