首頁 資料庫 mysql教程 嵌入式SQL与主语言的通信_MySQL

嵌入式SQL与主语言的通信_MySQL

Jun 01, 2016 pm 01:51 PM
語言

将SQL嵌入到高级语言中混合编程,程序中会含有两种不同计算模型的语句:
 (1)SQL语句:描述性的面向集合的语句;负责操纵数据库
 (2)高级语言语句:过程性的面向记录的语句;负责控制程序流程。
工作单元之间的通信方式:
 1. SQL通信区:向主语言传递SQL语句的执行状态信息;主语言能够据此控制程序流程
 2. 主变量:
  (1)主语言向SQL语句提供参数。
  (2)将SQL语句查询数据库的结果交主语言进一步处理。
 3. 游标:解决集合性操作语言与过程性操作语言的不匹配。
一、SQL通信区
  SQLCA: SQL Communication Area。SQLCA是一个数据结构
  SQLCA的用途:
  SQL语句执行后,DBMS反馈给应用程序信息
   (1)描述系统当前工作状态
   (2)描述运行环境
  这些信息将送到SQL通信区SQLCA中,应用程序从SQLCA中取出这些状态信息,据此
  决定接下来执行的语句。
  SQLCA的使用方法:
   用EXEC SQL INCLUDE SQLCA加以定义。SQLCA中有一个存放每次执行SQL语句后返回
   代码的变量SQLCODE。如果SQLCODE等于预定义的量SUCCESS,则表示SQL语句成功,
   否则表示出错;应用程序每执行完一条SQL 语句之后都应该测试一下SQLCODE的值,
   以了解该SQL语句执行情况并做相应处理。
  例:在执行删除语句DELETE后,不同的执行情况,SQLCA中有不同的信息:
        违反数据保护规则,操作拒绝
        没有满足条件的行,一行也没有删除
        成功删除,并有删除的行数
        无条件删除警告信息
        由于各种原因,执行出错
二、主变量
  嵌入式SQL语句中可以使用主语言的程序变量来输入或输出数据。在SQL语句中使用的
  主语言程序变量简称为主变量(Host Variable)。
  主变量的类型:
   输入主变量:由应用程序对其赋值,SQL语句引用。
   输出主变量:由SQL语句赋值或设置状态信息,返回给应用程序。
  一个主变量有可能既是输入主变量又是输出主变量。
  一个主变量可以附带一个指示变量(Indicator Variable)
  指示变量一个整型变量,用来“指示”所指主变量的值或条件。
  指示变量的用途:输入主变量可以利用指示变量赋空值;输出主变量可以利用指示
  变量检测出是否空值,值是否被截断
  在SQL语句中使用主变量和指示变量的方法
   (1) 说明主变量和指示变量
         BEGIN DECLARE SECTION
         ......... 
         ......... (说明主变量和指示变量)
         .........
         END DECLARE SECTION
   
 (2) 使用主变量
    说明之后的主变量可以在SQL语句中任何一个能够使用表达式的地方出现
    为了与数据库对象名(表名、视图名、列名等)区别,SQL语句中的主变
    量名前要加冒号(:)作为标志。
  (3) 使用指示变量
    指示变量前也必须加冒号标志
    必须紧跟在所指主变量之后
    在SQL语句之外(主语言语句中)使用主变量和指示变量的方法:
    可以直接引用,不必加冒号。
三、游标(cursor)
  游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。每个游标区都有
  一个名字,用户可以用游标逐一获取记录,并赋给主变量,交由主语言进一步处理。
  为什么要使用游标: 
   SQL语言与主语言具有不同数据处理方式
   SQL语言是面向集合的,一条SQL语句原则上可以产生或处理多条记录
  主语言是面向记录的,一组主变量一次只能存放一条记录,仅使用主变量并不能完全
  满足SQL语句向应用程序输出数据的要求。
  嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式下面用个程序详解

#include
#include


EXEC SQL BEGIN DECLARE SECTION; /*主变量说明开始*/ 
char deptname[64];
char HSno[64];
char HSname[64]; 
char HSsex[64];
int HSage;
int NEWAGE;
long SQLCODE;
EXEC SQL END DECLARE SECTION;     /*主变量说明结束*/

EXEC SQL INCLUDE sqlca;               /*定义SQL通信区*/

/*************************************************************************/

int main(void)                           /*C语言主程序开始*/
{
int count = 0;
char yn;                              /*变量yn代表yes或no*/
printf("Please choose the department name(CS/MA/IS): "); 
scanf("%s", deptname);                 /*为主变量deptname赋值*/
EXEC SQL CONNECT TO HP-08D6CXF128B/SQL2000 USER sa;         /*连接数据库TEST*/
EXEC SQL DECLARE SX CURSOR FOR   /*定义游标*/
SELECT Sno, Sname, Ssex, Sage   /*SX对应语句的执行结果*/
FROM Student
WHERE SDept = :deptname;
EXEC SQL OPEN SX;        /*打开游标SX便指向查询结果的第一行*/

for ( ; ; )                       /*用循环结构逐条处理结果集中的记录*/

EXEC SQL FETCH SX INTO :HSno, :HSname, :HSsex,:HSage;
      /*推进游标,将当前数据放入主变量*/
if (sqlca->sqlcode != 0)     /* sqlcode != 0,表示操作不成功*/
break;                /*利用SQLCA中的状态信息决定何时退出循环*/
if(count++ == 0)             /*如果是第一行的话,先打出行头*/
printf("/n%-10s %-20s %-10s %-10s/n", "Sno", "Sname", "Ssex", "Sage");
printf("%-10s %-20s %-10s %-10d/n", HSno, HSname, HSsex, HSage); 
     /*打印查询结果*/
printf("UPDATE AGE(y/n)?"); /*询问用户是否要更新该学生的年龄*/
do{                     
    scanf("%c",&yn);
}
while(yn != 'N' && yn != 'n' && yn != 'Y' && yn != 'y');
if (yn == 'y' || yn == 'Y')                 /*如果选择更新操作*/
{
   printf("INPUT NEW AGE:");
   scanf("%d",&NEWAGE);          /*用户输入新年龄到主变量中*/
   EXEC SQL UPDATE Student            /*嵌入式SQL*/
   SET Sage = :NEWAGE
   WHERE CURRENT OF SX ;
}                 /*对当前游标指向的学生年龄进行更新*/
}

EXEC SQL CLOSE SX;           /*关闭游标SX不再和查询结果对应*/
EXEC SQL COMMIT WORK;                           /*提交更新*/
EXEC SQL DISCONNECT TEST;                  /*断开数据库连接*/
}

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1659
14
CakePHP 教程
1416
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
在 Windows 11 上徹底刪除不需要的顯示語言的方法 在 Windows 11 上徹底刪除不需要的顯示語言的方法 Sep 24, 2023 pm 04:25 PM

在同一設定上工作太久或與他人分享PC。您可能會安裝一些語言包,這通常會產生衝突。因此,是時候刪除Windows11中不需要的顯示語言了。說到衝突,當有多個語言包時,無意中按Ctrl+Shift會更改鍵盤佈局。如果不注意,這將是手頭任務的障礙。所以,讓我們直接進入方法吧!如何從Windows11中刪除顯示語言? 1.從設定按+開啟“設定”應用,從導覽窗格中前往“時間和語言”,然後按一下“語言和地區”。 WindowsI點選要刪除的顯示語言旁邊的省略號,然後從彈出式選單中選擇「刪除」。在出現的確認提示中按一下“

在 iPhone 上更改語言的 3 種方法 在 iPhone 上更改語言的 3 種方法 Feb 02, 2024 pm 04:12 PM

眾所周知,iPhone是最人性化的電子產品之一,其中一個原因是它可以輕鬆地根據您的喜好進行個性化設定。在個人化設定中,您可以變更語言,這與您在設定iPhone時選擇的語言不同。如果您對多種語言熟悉,或者您的iPhone語言設定錯誤,您可以按照我們下面解釋的方法進行更改。如何更改iPhone的語言[3種方法]iOS允許使用者在iPhone上自由切換首選語言,以適應不同的需求。您可以更改與Siri的互動語言,方便與語音助理溝通。同時,在使用本機鍵盤時,您可以輕鬆地在多種語言之間切換,提高輸入效率。

給語言大模型加上綜合視聽能力,達摩院開源Video-LLaMA 給語言大模型加上綜合視聽能力,達摩院開源Video-LLaMA Jun 09, 2023 pm 09:28 PM

影片在當今社群媒體和網路文化中扮演著愈發重要的角色,抖音,快手,B站等已經成為數以億計用戶的熱門平台。用戶圍繞影片分享自己的生活點滴、創意作品、有趣時刻等內容,與他人互動和交流。近期,大語言模型展現了令人矚目的能力。我們能否給大模型裝上“眼睛”和“耳朵”,讓它能夠理解視頻,陪著用戶互動呢?從這個問題出發,達摩院的研究人員提出了Video-LLaMA,一個具有綜合視聽能力大模型。 Video-LLaMA能夠感知和理解視訊中的視訊和音訊訊號,並能理解使用者輸入的指令,完成一系列基於音訊視訊的複雜任務,

如何將Win10電腦的語言設定為漢語? 如何將Win10電腦的語言設定為漢語? Jan 05, 2024 pm 06:51 PM

有時候我們再剛入手安裝好電腦系統之後發現系統時英文的,遇到這種情況我們就需要把電腦的語言改成中文,那麼win10系統裡面該怎麼把電腦的語言改成中文呢,現在就給大家帶來具體的操作方法。 win10電腦語言怎麼改成中文1、開啟電腦點選左下角的開始按鍵。 2、點選左側的設定選項。 3.開啟的頁面選擇「時間和語言」4、開啟後,再點選左側的「語言」5、在這裡就可以設定你要的電腦語言。

已修復: Alt + Shift 不會更改 Windows 11 上的語言 已修復: Alt + Shift 不會更改 Windows 11 上的語言 Oct 11, 2023 pm 02:17 PM

當Alt+Shift不更改Windows11上的語言時,您可以使用Win+空白鍵獲得相同的效果。另外,請確保使用左Alt+Shift而不是鍵盤右側的那些。為什麼Alt+Shift無法更改語言?您沒有更多語言可供選擇。輸入語言熱鍵已變更。最新Windows更新中的錯誤阻止您更改鍵盤語言。卸載最新更新以解決此問題。您處於應用程式的活動視窗中,該應用程式使用相同的熱鍵執行其他操作。你如何使用AltShift更改Windows11上的語言? 1.使用正確的按鍵順序首先,確保您使用的是使用+組合的正確方法。

光動嘴就能玩出原神!用AI切換角色,還能攻擊敵人,網友:'綾華,使用神裡流·霜滅” 光動嘴就能玩出原神!用AI切換角色,還能攻擊敵人,網友:'綾華,使用神裡流·霜滅” May 13, 2023 pm 07:52 PM

說到這兩年風靡全球的國產遊戲,原神肯定是當仁不讓。根據5月公佈的本年度Q1季手遊收入調查報告,在抽卡手遊裡《原神》以5.67億美金的絕對優勢穩穩拿下第一,這也宣告《原神》在上線短短18個月後單在手機平台總收入就突破30億美金(約RM130億)。如今,開放須彌前最後的2.8海島版本姍姍來遲,在漫長的長草期後終於又有新的劇情和區域可以肝了。不過我不知道有多少“肝帝”,現在海島已經滿探索,又開始長草了。寶箱總共182個+1個摩拉箱(不計入)長草期根本沒在怕的,原神區從來不缺整活兒。不,在長草期間

探索智能體的邊界:AgentQuest,一個全面衡量和提升大型語言模型智能體性能的模組化基準框架 探索智能體的邊界:AgentQuest,一個全面衡量和提升大型語言模型智能體性能的模組化基準框架 Apr 11, 2024 pm 08:52 PM

基於大模型的持續最佳化,LLM智能體-這些強大的演算法實體已經展現出解決複雜多步驟推理任務的潛力。從自然語言處理到深度學習,LLM智能體正逐漸成為研究和工業界的焦點,它們不僅能理解和生成人類語言,還能在多樣的環境中製定策略、執行任務,甚至使用API​​調用和編碼來建置解決方案。在這種背景下,AgentQuest框架的提出具有里程碑意義,它不僅僅是一個LLM智能體的評估和進步提供了一個模組化的基準測試平台,而且透過其易於擴展的API,為研究人員提供了一個強大的工具,以更細緻地追蹤和改進這些智能體的性能

吵翻天! ChatGPT到底懂不懂語言? PNAS:先研究什麼是「理解」吧 吵翻天! ChatGPT到底懂不懂語言? PNAS:先研究什麼是「理解」吧 Apr 07, 2023 pm 06:21 PM

機器會不會思考這個問題就像問潛水艇會不會游泳一樣。 ——Dijkstra早在ChatGPT發表之前,業界就已經嗅到了大模型帶來的改變。去年10月14日,聖塔菲研究所(Santa Fe Institute)的教授Melanie Mitchell和David C. Krakauer在arXiv發布了一篇綜述,全面調研了所有關於「大規模預訓練語言模型是否可以理解語言」的相關爭論,文中描述了「正方」和「反方」的論點,以及根據這些論點衍生的更廣泛的智力科學的關鍵問題。論文連結:https://arxiv.o

See all articles