共計 1634 個字符,預計需要花費 5 分鐘才能閱讀完成。
今天就跟大家聊聊有關 Pro* C 中怎樣嵌入 pl/sql 塊,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
/* 包含 C 頭文件 */
#include stdio.h
#include string.h
#include stdlib.h
/* 包含 SQLCA 頭文件 */
EXEC SQL INCLUDE sqlca;
EXEC SQL INCLUDE sqlda;
int main()
{
EXEC SQL BEGIN DECLARE SECTION;
int money;
char answerbuff[200];
int flag;
char username[10],password[10],server[10];
EXEC SQL END DECLARE SECTION;
/*
* 定義輸入宿主變量: 接收用戶名、口令和網絡服務名
*
*/
strcpy(username, data_center
strcpy(password, data_center
strcpy(server, oradf1 /* 這里填寫的是數據庫的 SID*/
/* 連接到數據庫 */
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;
if (sqlca.sqlcode==0)
printf(連接成功!/n
else
/* 顯示連接錯誤消息 */
printf(%.*s/n , sqlca.sqlerrm.sqlerrml,
sqlca.sqlerrm.sqlerrmc);
/* 初始化 */
money=0;
flag=0; /* 用天判斷是否找到數據 */
/* 執行 plsql 塊 */
EXEC SQL EXECUTE
BEGIN
SELECT salary INTO :money FROM plsqltest WHERE name= ht
:flag:=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
:answerbuff:= 數據沒有找到
END;
END-EXEC;
/* 輸出結果 */
if (flag==0)
printf(%s/n ,answerbuff);
else
printf(總工資是:%d/n ,money);
}
=================================================
編譯方法:
1. 如果在 PC 源程序中內嵌了 PL/SQL 塊,SQLCHECK 應該 SEMANTICS 或是 FULL
2. 當 SQLCHECK 的值是 SEMANTICS 或是 FULL 時,必須設置 USERID
proc PARSE=NONE include=-I/opt/oracle/product/10.2.0/precomp/public include=-I/opt/oracle/product/10.2.0/rdbms/public sqlcheck=fullUSERID=data_center/data_center@oradf1 iname=test.pc oname=test.c
gcc 的一些選項,不加這些,有時會報錯。
gcc -L/opt/oracle/product/10.2.0/lib -lclntsh -ldl -lm -lnsl -o test test.c
===========================================
創建表:
create table PLSQLTEST
(
salary NUMBER,
NAME VARCHAR2(10)
);
insert into plsqltest (salary, NAME)
values (1000, xym
insert into plsqltest (salary, NAME)
values (2000, ht
commit;
看完上述內容,你們對 Pro* C 中怎樣嵌入 pl/sql 塊有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。