日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Pro*C 中嵌入pl/sql块

發(fā)布時(shí)間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pro*C 中嵌入pl/sql块 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
From: http://blog.csdn.net/zistxym/article/details/5054066?

?

/* 包含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;

總結(jié)

以上是生活随笔為你收集整理的Pro*C 中嵌入pl/sql块的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。