This reference은 DB2와 SolidDB 프로 시저를 비교합니다.
"목록 15. 결과 세트의 끝을 보여주는 SQLSUCCESS"절에서 IBM 참조 서에이 스 니펫이 나와 있습니다. 페치 커서 문이 을 실패하고 이 SQLSUCCESS의 값이 0으로 설정하고 루프가 종료 WHILE이 검색에 다른 행을 찾을 수없는 경우
EXEC SQL FETCH sel_tab;
WHILE SQLSUCCESS LOOP
EXEC SQL FETCH sel_tab;
END LOOP
는 또한
을 말한다. 거의 첫 번째 EXEC SQL FETCH
행을 찾을 수없는 경우 WHILE 루프도 입력 할 수 없습니다 나을 알려줍니다
. 하지만 코드에서 그런 일이 일어나지 않는다고 제안하는 것 같습니다.
나중에 "표 7. solidDB SQLERROR. cursorname 문의"에서이 코드를 보여줍니다. (내 주석.)
"CREATE PROCEDURE tabs_in_schema (schema_nm
VARCHAR) RETURNS (nr_of_rows INTEGER)
BEGIN
DECLARE tab_nm VARCHAR;
EXEC SQL PREPARE sel_tab -- A SELECT statement
SELECT table_name FROM sys_tables
WHERE table_schema = ?;
EXEC SQL PREPARE ins_tab
INSERT INTO my_table (table_name,
schema) VALUES (?,?);
nr_of_rows := 0;
EXEC SQL EXECUTE sel_tab USING -- Executes the SELECT
(schema_nm)INTO (tab_nm);
EXEC SQL FETCH sel_tab; -- EXEC SQL FETCH first row
WHILE SQLSUCCESS LOOP -- Like listing 15
nr_of_rows := nr_of_rows + 1;
EXEC SQL EXECUTE ins_tab USING
(tab_nm, schema_nm);
IF SQLROWCOUNT <> 1 THEN
RETURN SQLERROR OF ins_tab;
END IF;
EXEC SQL FETCH sel_tab; -- FETCH subsequent rows
END LOOP
END";
난 당신이)
SELECT COUNT(your_column_name)
FROM your_table
WHERE ...;
COUNT (같은 것을 실행할 수 항상 긴 쿼리가 유효 적어도 하나의 행을 반환합니다 가정합니다. 그러나 그것은 데이터베이스에 대한 더 많은 왕복을 포함합니다. 난 당신이 행을 가져 오려고 노력하는 관용구에 집착하고 오류를 잡는 것이 낫다고 생각합니다.
코드를 게시해야 할 수도 있습니다. –