pro c 倒出資料庫資料

2021-07-10 17:55:14 字數 3973 閱讀 1893

最近專案要做對資料庫,大資料量的倒數,打算用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...