您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)Pro*C中怎樣嵌入pl/sql塊,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
/* 包含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;
/*
* 定義輸入宿主變量:接收用戶名、口令和網(wǎng)絡(luò)服務(wù)名
*
*/
strcpy(username,"data_center");
strcpy(password,"data_center");
strcpy(server,"oradf1"); /*這里填寫(xiě)的是數(shù)據(jù)庫(kù)的SID*/
/* 連接到數(shù)據(jù)庫(kù) */
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :server;
if (sqlca.sqlcode==0)
printf("連接成功!/n");
else
/* 顯示連接錯(cuò)誤消息 */
printf("%.*s/n", sqlca.sqlerrm.sqlerrml,
sqlca.sqlerrm.sqlerrmc);
/*初始化*/
money=0;
flag=0; /*用天判斷是否找到數(shù)據(jù)*/
/*執(zhí)行plsql塊*/
EXEC SQL EXECUTE
BEGIN
SELECT salary INTO :money FROM plsqltest WHERE name='ht';
:flag:=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
:answerbuff:='數(shù)據(jù)沒(méi)有找到';
END;
END-EXEC;
/*輸出結(jié)果*/
if (flag==0)
printf("%s/n",answerbuff);
else
printf("總工資是:%d/n",money);
}
=================================================
編譯方法:
1. 如果在PC源程序中內(nèi)嵌了PL/SQL塊, SQLCHECK應(yīng)該SEMANTICS或是 FULL
2. 當(dāng)SQLCHECK的值是SEMANTICS或是 FULL時(shí),必須設(shè)置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的一些選項(xiàng),不加這些,有時(shí)會(huì)報(bào)錯(cuò)。
gcc -L/opt/oracle/product/10.2.0/lib -lclntsh -ldl -lm -lnsl -o test test.c
===========================================
創(chuàng)建表:
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;
看完上述內(nèi)容,你們對(duì)Pro*C中怎樣嵌入pl/sql塊有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。