CONNECT EXEC SQL CONNECT logpass logpass loginpasswordSID EXEC

  • Slides: 10
Download presentation

Секция CONNECT • EXEC SQL CONNECT : log_pass; где : log_pass =“login/password@SID” • EXEC

Секция CONNECT • EXEC SQL CONNECT : log_pass; где : log_pass =“login/password@SID” • EXEC SQL CONNECT : uid IDENTIFIED BY : pwd; где : uid=login, : pwd=password (если SID – однозначен в данном сетевом сегменте)

Описание курсора • EXEC SQL DECLARE cur_name CURSOR FOR select…. ; Пример EXEC SQL

Описание курсора • EXEC SQL DECLARE cur_name CURSOR FOR select…. ; Пример EXEC SQL DECLARE w CURSOR FOR select Tnum, okl from sotrud order by okl; • Преобразуется в static const char *sq 0003 = "select Tnum , okl from sotrud order by okl "; и подстановку указателя в программный блок

Пример #include <iostream> #include <string. h> using namespace std; EXEC SQL BEGIN DECLARE SECTION;

Пример #include <iostream> #include <string. h> using namespace std; EXEC SQL BEGIN DECLARE SECTION; varchar log_pass[40]; int loop, n[100]; float many[100]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE sqlca. h; void main() { strcpy((char*)log_pass. arr, "mar/mar@k 806 new"); log_pass. len = strlen((char*)log_pass. arr); EXEC SQL CONNECT : log_pass; if(sqlca. sqlcode == 0) cout<<"Connect OK!"<<endl; EXEC SQL WHENEVER SQLERROR GOTO errexit; EXEC SQL select count(*) into : loop from sotrud; EXEC SQL DECLARE w CURSOR FOR select Tnum, okl from sotrud order by okl; EXEC SQL open w; EXEC SQL whenever not found do break; while(1){ EXEC SQL fetch w into : n, : many; } EXEC SQL close w; EXEC SQL whenever not found continue; for( int j=0; j<loop; j++) cout<<n[j]<<" "<<many[j]<<endl; EXEC SQL COMMIT WORK RELEASE; errexit: EXEC SQL WHENEVER SQLERROR CONTINUE; EXEC SQL ROLLBACK WORK; }