最近專案要做對資料庫,大資料量的倒數,打算用pro*c倒出。然後再用sqlload倒入別的庫中
ansi動態sql
/* sqlcheck=full */
/* userid=scott/password@exam */
/* mode=ansi */
/* 包含c標頭檔案 */
#include #include /* 包含sqlca標頭檔案 */
#include /* 定義選擇列表項名的最大長度 */
#define max_name_len 31
/* 定義繫結變數值和選擇列表項值的最大長度 */
#define max_var_len 200
/* 定義宿主變數 */
exec sql begin declare section;
char sql_stat[100];
char current_date[20];
exec sql end declare section;
void connect();
void sql_error();
void process_input();
void process_output();
int main()
/* 關閉游標 */
exec sql close c;
} /* 釋放輸入描述區和輸出描述區 */
exec sql deallocate descriptor 'input_descriptor';
exec sql deallocate descriptor 'output_descriptor';
/* 提交事務,斷開連線 */
exec sql commit work release;
puts("謝謝使用ansi動態sql!\n");
return 0;
}void connect()/*資料庫連線-本地資料庫,不新增server*/
void sql_error()
void process_input()
}void process_output()
/* 選擇列表項->輸出描述區 */
exec sql describe output s using descriptor 'output_descriptor';
/* 取得選擇列表項個數 */
exec sql get descriptor 'output_descriptor' :output_count = count;
/* 迴圈處理選擇列表項 */
for(i = 0 ; i != output_count ; ++i)
printf("\n");
/* 提取資料完畢->退出迴圈 */
exec sql whenever not found do break;
/* 迴圈處理選擇列表項資料 */
for( ; ; )
else
else
if(i!=0)else
} // printf("\n");
fprintf(fp,"%s","\n");
} fclose(fp);
}
oracle 動態sql4
/* 包含c標頭檔案 */
#include #include #include #include #include /* 包含sqlda和sqlca結構 */
#include #include /* 定義繫結變數和選擇列表項的最大個數 */
#define max_items 40
/* 定義繫結變數和選擇列表項名稱的最大長度 */
#define max_vname_len 30
/* 定義指示變數名稱的最大長度 */
#define max_iname_len 30
void connect();
void sql_error();
void alloc_descriptors(int , int , int);
void dealloc_descriptors();
void set_bind_variables();
void process_select_list();
/* 定義繫結描述區和選擇描述區 */
sqlda* bind_dp;
sqlda* select_dp;
/* 定義輸入宿主變數:存放動態sql語句 */
char sql_stat[100];
char current_date[20];
int main()
/* 關閉游標 */
exec sql close c;
} /* 釋放選擇描述區和選擇描述區 */
dealloc_descriptors();
/* 提交事務,斷開連線 */
exec sql commit work release;
puts("謝謝使用oracle動態sql方法四!\n");
return 0;
}void connect()/*資料庫連線-本地資料庫,不新增server*/
void connect2()
void sql_error()
void alloc_descriptors(int size , int max_vname_len , int max_iname_len)
}void dealloc_descriptors()
/* 釋放繫結描述區和選擇描述區 */
sqlsqldafree(0 , bind_dp);
sqlsqldafree(0 , select_dp);
}void set_bind_variables()
}void process_select_list()
/* 根據變數長度,重新為選擇列表項資料緩衝區分配記憶體 */
if(2 != select_dp->t[i])
/* 其他型別 */
select_dp->v[i] = (char*)realloc(select_dp->v[i] , select_dp->l[i] + 1);
else
/* number型別 */
select_dp->v[i] = (char*)realloc(select_dp->v[i] , select_dp->l[i]);
/* 初始化title */
memset(title , ' ' , max_vname_len);
/* 選擇列表項名稱->title */
strncpy(title , select_dp->s[i] , select_dp->c[i]);
/* 顯示列名 */
if(2 == select_dp->t[i])
if(scale > 0)
printf("\t%.*s" , select_dp->l[i] + 3, title);
else
printf("\t%.*s" , select_dp->l[i] , title);
else
printf("\t%-.*s" , select_dp->l[i] , title);
/* 根據oracle內部型別確定外部資料型別(顯示型別) */
if( 2 == select_dp->t[i])
else
/* char */
select_dp->t[i] = 1;
} printf("\n");
/* 提取資料完畢->結束迴圈 */
exec sql whenever not found do break;
/* 迴圈處理選擇列表資料 */
for( ; ; )
elseelse if(4 == select_dp->t[i])else
}} printf("\n");
}}
pro c 倒出資料庫資料
最近專案要做對資料庫,大資料量的倒數,打算用pro c倒出。然後再用sqlload倒入別的庫中 ansi動態sql sqlcheck full userid scott password exam mode ansi 包含c標頭檔案 include include 包含sqlca標頭檔案 inclu...
資料庫(proc程式設計)
1 proc是什麼?proc是oracle用來預編譯嵌入sql語句的c程式。下圖展示了proc c c 程式的編寫 編譯流程。根據上圖可以看出proc只是預編譯一下源程式,即把 pc預編譯成標準的c或c 程式。2 怎樣編譯 鏈結 pc應用程式?本文以linux環境為例,首先要保證c c 的編譯器 g...
資料庫 Proc程式設計一
proc程式設計 嵌入式sql sql寫入到c語言程式中 proc程式設計標頭檔案路徑 11.2.0 dbhome 1 precomp public proc程式設計要注意proc編譯器也會使用gcc編譯器中的標頭檔案,所以需要在proc編譯器中進行配置,加上系統的標頭檔案路徑 11.2.0 dbh...