第一種動態sqlexec sql execute immediate :psql;
1.僅適用於非select語句
2.嵌入sql語句中不能包含輸入宿主變數
voidmain()
;
while(1
)
strcpy(psql,buf);
//動態sql第一種
exec sql execute immediate :psql;
exec sql commit;
printf(
"sql 語句執行成功 !\r\n");
}//提交斷開連線
exec sql commit release;
system(
"pause");
}
第二種動態sqlexec sql prepare 識別符號 from
'sql語句';
exec sql execute 識別符號 using 宿主變數1,宿主變數2;
1.僅適用於非select語句
2.嵌入sql語句中可以包含輸入宿主變數和指示變數,其個數和型別在預編譯時已知。
voidmain()
//動態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");
}
第三種動態sql1.輸入宿主變數個數固定 查詢條件固定
2.輸出宿主變數個數固定 返回結果固定
voidmain()
//動態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語句執行失敗時,應用程式應該能夠檢測到失敗資訊,並進行適當...