SQL語言:嵌入式SQL知識筆記

? ? ? ? ? ? ?

?

1、概念

SQL提供了將SQL語句嵌入到某種高級語言中的使用方式,通常采用預編譯的方法將SQL語句嵌入高級語言中。采用的方法由DBMS的預處理程序對源程序進行掃碼、識別出SQL語句,把它們轉換為主語言調用語句,這樣可以讓主語言編譯程序能識別它,最后由主語言的編譯程序將整個源程序編譯成目標碼。

2、SQL嵌入主語言涉及的幾個問題

區分主語言語句與SQL語句:通常在SQL語句前加前綴EXEC SQL,結束標志會跟著主語言不同而不同。

主語言工作單元與數據庫工作單元的通信機制

1、SQL通信區:向主語言傳遞SQL語句執行狀態信息,使主語言能夠根據此信息控制程序流程。

2、主變量:也成為共享變量。主語言向SQL語句提供參數主要通過主變量,主變量由主語言的程序定義,并用SQl的DECLARE語句說明。比如C語言中用法:

exec sql begin delcare p
char sno[4],cno[3]
int grade;
char sqlstate[7]
exec sql end declare p  

根據共享變量givesno值查詢學生關系students 中的學生姓名、年齡、性別

exec sql select sname,age,sex
into :Msno,:Mcno;givensno
from studnets
where sno:Msno;

3、游標

SQl語言主要是面向集合的,一條SQL語句可產生或處理多條記錄。而主語言是面向記錄的,一組主變量一次只能放一條記錄,因此引入游標,通過移動游標指針來決定獲取那一條記錄。

3.1 定義游標:

exec sql declare<游標> cursor for <select 查詢語句>
endexec

3.2 打開游標

exec sql open <游標名> endexec


該語句執行游標定義中的select語句,同時游標處于活動狀況。游標是一個指針,此時指向查詢結構的第一行之前。

3.3 推進游標

exec sql fetch from <游標名> into <變量表> endexec

該語句使用時,游標推進一行,并把游標指向的行中的值取出來,送到共享變量中去。

3.4 關閉游標

exec sql close <游標名> endexec

3.5游標完整例子

---游標更新刪除當前數據
---1.聲明游標
declare orderNum_03_cursor cursor scroll
for select OrderId ,userId from bigorder where orderNum='ZEORD003402'
--2.打開游標
open orderNum_03_cursor
--3.聲明游標提取數據所要存放的變量
declare @OrderId int ,@userId varchar(15)
--4.定位游標到哪一行
fetch First from orderNum_03_cursor into @OrderId,@userId  --into的變量數量必須與游標查詢結果集的列數相同
while @@fetch_status=0  --提取成功,進行下一條數據的提取操作 beginif @OrderId=122182beginUpdate bigorder Set UserId='123' Where Current of  orderNum_03_cursor  --修改當前行endif @OrderId=154074beginDelete bigorder Where Current of  orderNum_03_cursor --刪除當前行endfetch next from orderNum_03_cursor into @OrderId ,@userId --移動游標end

IT技術分享社區

個人博客網站:https://programmerblog.xyz

文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271215.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271215.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271215.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mysql bat腳本編寫_第一次編寫bat腳本

** 前言 **今天中午在宿舍不想做什么事&#xff0c;于是想到傻怡的電腦太卡了&#xff0c;多方面原因造成的&#xff0c;多軟件安裝于系統盤、安裝了沒用的殺毒軟件等等&#xff0c;但是對于windows系統來說呢&#xff0c;使用時間長了&#xff0c;會有很多的緩存文件、日志文件…

python 關閉窗口事件_關于python:如何在Tkinter中處理窗口關閉事件?

如何在Python Tkinter程序中處理窗口關閉事件(用戶單擊" X"按鈕)&#xff1f;Tkinter支持一種稱為協議處理程序的機制。在這里&#xff0c;術語協議是指應用程序和窗口管理器之間的交互。最常用的協議稱為WM_DELETE_WINDOW&#xff0c;用于定義當用戶使用窗口管理器顯…

windows+caffe(三)——求取圖片的均值

這個要在圖片已經轉化成lmdb格式下才能求均值。。。 1.查看caffe根目錄下的bin是否存在compute_image_mean.exe&#xff08;用的happey大神的&#xff09; 如果沒有存在&#xff0c;你需要打開MainBuilder.sln&#xff0c;右鍵compute_image_mean-僅用于項目-僅生成compute_ima…

硬盤知識:硬盤中藍盤、綠盤、黑盤、紅盤有什么區別?

今天給大家介紹一下電腦硬盤中藍盤、綠盤、黑盤、紅盤有什么區別&#xff1f;我們平常說的藍盤、黑盤、紅盤、綠盤這些通常指的是西部數據旗下所產的硬盤&#xff0c;通過各自的特點進行了上述的分類。從外觀上我們可以通過硬盤上貼的紙的顏色來區分。綠盤&#xff1a;監控盤&a…

java 框架mvc_JAVA框架-MVC模式

MVCMVC 模式代表 Model-View-Controller(模型-視圖-控制器) 模式。這種模式用于應用程序的分層開發。Model(模型) - 模型代表一個存取數據的對象或 JAVA POJO。它也可以帶有邏輯&#xff0c;在數據變化時更新控制器。View(視圖) - 視圖代表模型包含的數據的可視化。Controller(…

python selenium 獲取同一元素的多個屬性_python+selenium如何獲取元素中并列的屬性值?...

獲取標簽內容使用element.attribute()方法獲取dom元素的內容&#xff0c;如&#xff1a;dr driver.find_element_by_id(tooltip)dr.get_attribute(data-original-title) #獲取tooltip的內容dr.text #獲取該鏈接的text獲取標簽屬性linkdr.find_element_by_id(tooltip)link.valu…

ndk學習6: 使用gdb調試ndk程序一

生成debug版程序 方法一: 使用ndk-build編譯時&#xff0c;加上如下參數NDK_DEBUG1&#xff0c;之后生成so文件之外&#xff0c;還會生成gdbobserver,gdb.setup調式文件 方法二: 修改AndroidManifest.xml文件,增加debuggable屬性為true <application android:debuggable&quo…

后端:C#操作Mongodb用法筆記

MongoDB 是一個基于分布式文件存儲的數據庫。由 C 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。今天主要給大家介紹一下C#編程語言下Mongodb的用法。開發環境為VS2015示例主要包括數據的增刪改查、分頁查詢、文件存儲等功能。有需要的朋友可以一起學習一下。…

計算機語言分為三種:機器語言、匯編語言和高級語言

計算機語言有哪幾種&#xff1f; 計算機語言分為三種&#xff1a;機器語言、匯編語言和高級語言 1.機器語言 機器語言是用二進制代碼表示計算機能直接識別和執行的一種機器指令的集合&#xff0c;它是計算機的設計者通過計算機的硬件結構賦予計算機的操作功能。 優點&#…

asp php java_ASP\JSP\PHP相比各有什么優缺點?

展開全部ASP、JSP、和PHP的優點e5a48de588b662616964757a686964616f31333366306538和缺點&#xff1a;一、ASP優點:1、無需編譯2、易于生成3、獨立于瀏覽器4、面向對象5、與任何ActiveX scripting 語言兼容6、源程序碼不會外漏缺點:1、Windows本身的所有問題都會一成不變的也累…

js變量提升_學習筆記:JS中的作用域和預解析

知識總結&#xff1a;謝靜賢、湯昊在javascript中作用域是非常重要的&#xff0c;本文將會說明作用域以及我們在工作&#xff0c;以及面試中的一些面試題&#xff0c;如果有不足的地方希望大家可以評論指出來&#xff0c;自己一定會及時的改正錯誤&#xff0c;避免大家走入一些…

ArcGIS Engine開發之旅09--幾何對象和空間參考

1.Geometry Geometry 是 GIS 中使用最為廣泛的對象集之一&#xff0c;用戶在創建、刪除、編輯和進行地理分析的時候&#xff0c;就是處理一個包含幾何形體的矢量對象&#xff1b;除了顯示要素意外&#xff0c;控件對象選擇&#xff0c;要素符號化&#xff0c;標注要素&#xf…

項目管理:軟件工程相關知識筆記

1、軟件工程概念介紹軟件工程是指應用計算機科學、數學、管理科學等原理&#xff0c;以工程化的原則和方法來解決軟件問題的工程&#xff0c;其主要目的是提高軟件生產率、提高軟件質量、降低軟件成本。2、軟件工程學的組成軟件開發技術&#xff1a;軟件開發方法學、軟件工具、…

android開發java環境_搭建Android開發環境 - Android - mobile - JavaEye論壇

Android的開發現在是如火如荼&#xff0c;逞現在不是很忙了&#xff0c;學習了下&#xff0c;這里記錄下了在windows在如何搭建Android開發環境&#xff0c;對自己是個記錄&#xff0c;對新入門的兄弟姐妹們可以參考一下&#xff01;(1)安裝JDK&#xff0c;省略。(2)下載Androi…

updatebyprimarykeyselective的where條件是全部字段_ArcGIS 字段計算器

使用鍵盤輸入值并不是編輯表中值的唯一方式。在某些情況下&#xff0c;為了設置字段值&#xff0c;可能要對單條記錄甚至是所有記錄執行數學計算。您可以對所有記錄或選中記錄執行簡單計算和高級計算。此外&#xff0c;還可以在屬性表中的字段上計算面積、長度、周長和其他幾何…

jQuery自定義選擇器

jQuery 1.8版本后&#xff0c; 可以通過$ 的createPseudo()方法自定義選擇器&#xff0c;滿足不同的需求&#xff0c;本文來自<jquery in action> <ul class"levels"><li data-level"1" data-points"1" data-technologies"j…

項目管理基礎:軟件生命周期概念介紹

1、軟件生命周期定義軟件產品或軟件系統要經歷孕育、誕生、成長、成熟、衰亡等階段稱為軟件的生命周期。2、軟件生命周期階段組成軟件的生命周期由可行性分析與項目開發計劃、需求分析、總體設計、詳細設計、編碼、單元測試、綜合測試、維護階段。2.1 可行性分析與項目開發計劃…