資料庫 proc程式設計九

2021-09-08 12:24:01 字數 1801 閱讀 1251

第一種動態sql

exec sql execute immediate :psql;

1.僅適用於非select語句

2.嵌入sql語句中不能包含輸入宿主變數

void

main()

;

while(1

)

strcpy(psql,buf);

//動態sql第一種

exec sql execute immediate :psql;

exec sql commit;

printf(

"sql 語句執行成功 !\r\n");

}//提交斷開連線

exec sql commit release;

system(

"pause");

}

第二種動態sql

exec sql prepare 識別符號 from

'sql語句';

exec sql execute 識別符號 using 宿主變數1,宿主變數2;

1.僅適用於非select語句

2.嵌入sql語句中可以包含輸入宿主變數和指示變數,其個數和型別在預編譯時已知。

void

main()

//動態sql第二種

//準備固定的sql語句

//mypresql:準備sql語句的識別符號

//:a和:b :並非宿主變數,而是乙個佔位符

exec sql prepare mypresql from '

update t2 set name=:a where ida=:b';

//執行動態sql

exec sql execute mypresql using :name1,:ida1;

exec sql commit;

printf(

"sql 語句執行成功 !\r\n");

}//提交斷開連線

exec sql commit release;

system(

"pause");

}

第三種動態sql

1.輸入宿主變數個數固定 查詢條件固定

2.輸出宿主變數個數固定 返回結果固定

void

main()

//動態sql第三種

//準備固定的sql語句

//mypresql:準備sql語句的識別符號

//:a和:b :並非宿主變數,而是乙個佔位符

exec sql prepare mypresql from '

select ida,idb,name from t2 where name=:a';

//定義游標

exec sql declare c cursor for mypresql;

//開啟游標,傳入引數

exec sql open c using :name1;

//查詢資料

exec sql whenever not found do break;

while(1

)

printf(

"ida=%d,idb=%d,name=%s\r\n

",ida2,idb2,name2);

}//關閉游標

exec sql close c;

}//提交斷開連線

exec sql commit release;

system(

"pause");

}

資料庫(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...

資料庫 proc程式設計四

錯誤處理機制 當在pro c c 應用程式中執行sql語句中,oracle會將最近執行的sql語句的狀態資訊儲存到狀態變數sqlcode sqlstate或者sqlca結構中。當sql語句執行成功時,一般情況下不需要進行任何其他處理 當sql語句執行失敗時,應用程式應該能夠檢測到失敗資訊,並進行適當...