select 문을 반환하는 저장 프로 시저를 만들 필요가 있습니다.Informix 저장 프로 시저 반환 값
출력을 다른 테이블에서 액세스 할 수 없으므로 임시 테이블에 출력 할 수 없도록 Java 응용 프로그램에서 호출해야합니다. 그래서 기본적으로 스토어드 프로 시저를 호출하여 반환 값에서 배열리스트를 생성해야합니다.
반환되는 데이터는 select * from table
입니다.
select 문을 반환하는 저장 프로 시저를 만들 필요가 있습니다.Informix 저장 프로 시저 반환 값
출력을 다른 테이블에서 액세스 할 수 없으므로 임시 테이블에 출력 할 수 없도록 Java 응용 프로그램에서 호출해야합니다. 그래서 기본적으로 스토어드 프로 시저를 호출하여 반환 값에서 배열리스트를 생성해야합니다.
반환되는 데이터는 select * from table
입니다.
저장 프로 시저가 값을 반환 한 SELECT 문인 것처럼 처리하십시오.
ESQL/C와 같은 언어에서는 'EXECUTE PROCEDURE'문을 준비한 다음 커서를 선언하고 OPEN, 루프에서 FETCH 및 CLOSE를 차례로 선언합니다. 유사한 작업은 JDBC와 Java에서도 작동해야합니다. 준비 및 실행 단계를 분리 할 필요가없는 가능한 차이점이 있습니다.
나는 '자바'라고 말할 수있다. 그것은 'C'로 시작합니다 ... 그렇지 않습니까? 'C'처럼?
는 ESQL/C에서, 당신이 (오류 검사 및 변수 선언을 무시) 작성합니다EXEC SQL PREPARE prep_stmt FROM "EXECUTE PROCEDURE CursoryProcedure(?,?,?)";
EXEC SQL DECLARE cursor_nm FROM prep_stmt;
EXEC SQL OPEN cursor_nm USING :hostvar1, :hostvar2, :hostvar3;
while (SQLCODE == 0)
{
EXEC SQL FETCH cursor_nm INTO :receiver1, :receiver2, :receiver3,
:receiver4, :receiver5, :receiver6;
if (SQLCODE != 0)
break;
...use the values in the receiverN variables...
}
EXEC SQL CLOSE cursor_nm;
EXEC SQL FREE cursor_nm;
EXEC SQL FREE prep_stmt;
물음표가 저장 프로 시저에 전달 된 입력 값을 나타내는 세 자리; 값은 OPEN 조작에서 값으로 전달됩니다. 저장 프로시 저는 하나 이상의 데이터 행을 (0 또는) 반환 할 수 있습니다. 각 행은 그림과 같이 차례대로 처리됩니다. 당신이 JDBC로 위의 ESQL/C를 변환하는 방법을 일을해야 할 것 - 이제
select_str = "SELECT * FROM A_Table WHERE Col1 = ? AND (Col2 = ? OR Col3 < ?)";
EXEC SQL PREPARE prep_stmt FROM :select_str;
:
그 코드와 SELECT 문을 처리 사이의 유일한 차이점은 PREPARE 라인입니다. ESQL/C에서는 무료 운영에 대해 걱정할 필요가 없을 것입니다. 심지어 두 가지 중 하나가 중복 될 수도 있지만 무해합니다. 그러나 PREPARE, DECLARE, OPEN, FETCH-in-a-loop 및 CLOSE 시퀀스는 복제해야합니다.
난 당신이 설명서를 읽고 인포믹스 저장 프로 시저를 작성하는 방법을 알 수 있으리라 믿고있어,하지만 단지의 경우 :
CREATE PROCEDURE CursoryProcedure(i INTEGER, j CHAR(10), k DATE)
RETURNING CHAR(20) AS v1, INTEGER AS v2, DATE AS v3,
VARCHAR(255) AS v4, INTEGER AS v5, INTEGER AS v6;
DEFINE v1 CHAR(20);
DEFINE v2 INTEGER;
DEFINE v3 DATE;
DEFINE v4 VARCHAR(255);
DEFINE v5 INTEGER;
DEFINE v6 INTEGER;
FOREACH SELECT *
INTO v1, v2, v3, v4, v5, v6
FROM Table
WHERE Col1 = i AND (Col2 = j OR Col3 < k)
RETURN v1, v2, v3, v4, v5, v6 WITH RESUME;
END FOREACH;
END PROCEDURE;
이 작업을 수행하는 더 많거나 적은 최소한의 절차 - 데이터로 더 많은 것을하지 않고 선택한 값을 반환하는 절차를 자주 작성하지는 않습니다.
내가 저장 프로덕션을 작성할 때 select 문을 선언하지만 informix 요청을 통해 임시 테이블에 출력을 넣습니다. 내가 직접 쿼리를 실행하는 것처럼 출력을 얻고 싶습니다. – glenn