溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Pro*C中怎樣嵌入pl/sql塊

發(fā)布時(shí)間:2021-11-30 17:11:39 來(lái)源:億速云 閱讀:182 作者:柒染 欄目:數(shù)據(jù)庫(kù)

今天就跟大家聊聊有關(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è)資訊頻道,感謝大家的支持。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI