sqlserver預(yù)編譯,什么是sql預(yù)編譯

SQL存儲(chǔ)過(guò)程的作用和優(yōu)缺點(diǎn)

SQL存儲(chǔ)過(guò)程放在SQL數(shù)據(jù)庫(kù)中,1,因此在程序中調(diào)用的時(shí)候不必自己拼接sql語(yǔ)句。2,SQLSERVER會(huì)對(duì)存儲(chǔ)過(guò)程進(jìn)行預(yù)編譯,因此速度快。3,在網(wǎng)絡(luò)上不必傳輸冗長(zhǎng)的SQL語(yǔ)句,而是直接調(diào)用存儲(chǔ)過(guò)程的名字,因此可以加快速度當(dāng)然,在一些外包軟件開(kāi)發(fā)中,是不允許使用存儲(chǔ)過(guò)程的。因?yàn)閷?duì)方不可以把數(shù)據(jù)庫(kù)暴露給你,此時(shí)你只能使用SQL語(yǔ)句。不過(guò)國(guó)內(nèi)的一些小型企業(yè)使用SQL存儲(chǔ)過(guò)程還是很流行的。因?yàn)槌绦虼a里不包含SQL語(yǔ)句,因此會(huì)數(shù)據(jù)庫(kù)會(huì)相對(duì)安全一些。

創(chuàng)新互聯(lián)專(zhuān)注于農(nóng)安企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),購(gòu)物商城網(wǎng)站建設(shè)。農(nóng)安網(wǎng)站建設(shè)公司,為農(nóng)安等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)

sqlserver 問(wèn)題

存儲(chǔ)過(guò)程是預(yù)編譯過(guò)的,調(diào)用時(shí)直接執(zhí)行

T_SQL則是要先檢查語(yǔ)法錯(cuò)誤、進(jìn)行預(yù)編譯、然后執(zhí)行,速度當(dāng)然要慢一點(diǎn)。

這個(gè)差距只有在大數(shù)據(jù)量的情況下才有明顯區(qū)分,否則可視為相同速度(時(shí)間差距可忽略不計(jì))。

C語(yǔ)言中使用嵌入式sql

嵌入式SQL程序的VC+SQL server 2000實(shí)現(xiàn)的環(huán)境配置

嵌入SQL的C應(yīng)用程序具體到VC++6.0, SQL Server2000 下調(diào)試可分為五步:1、環(huán)境初始化;2、預(yù)編譯;3、編譯;4、連接;5、運(yùn)行。下面就其中重要的的操作方法給以詳細(xì)說(shuō)明。

1、環(huán)境初始化

(1) SQL Server2000為其嵌入式SQL提供了一此特殊的接口;默認(rèn)的安裝方式?jīng)]有安裝這此接口;因此,需要把devtools.rar解壓到SQLServer的系統(tǒng)日錄下(即文件夾devtools中的所有文件);如果操作系統(tǒng)安裝在C盤(pán),則SQL Server的系統(tǒng)目錄是C:\Program Files\Microsoft SQL Server。(或 在安裝Microsoft SQL Server 2000時(shí)選擇安裝Development Tools,為使用嵌入式SQL語(yǔ)言準(zhǔn)備必要的頭文件和庫(kù)文件。)

( 2)初始化Visual C++ 6.0編譯器環(huán)境。在命令行方式下運(yùn)行文件\Microsoft Visual Studio\VC98\Bin\vcvars32.bat。

(3)初始化SQL Server的預(yù)編譯環(huán)境。在命令行方式下運(yùn)行文件:\Devtools\samples\esqlc\setenv.bat。

( 4) VC++6.0環(huán)境配置。具體配置分為如下三步[:

①Tools-options-directories-Include Files:添加 C:\Program Files\Microsoft SQL Server\devtools\include。將SQL server自帶的用于數(shù)據(jù)庫(kù)開(kāi)發(fā)的頭文件包含到工程環(huán)境中。

②Tools-options-directories-Lib Files:添加C:\Program Files\Microsoft SQL Server\devtools\x861ib。將開(kāi)發(fā)用到的包包含到工程中。

③project-Settings-Link-Object/Library Modules,添加庫(kù)文件:SQLakw32.lib, Caw32.lib。這兩個(gè)文件之間用空格分開(kāi)。

2、預(yù)編譯

C語(yǔ)言編譯程序不能識(shí)別應(yīng)用程序中的SQL語(yǔ)句,需要經(jīng)過(guò)預(yù)處理程序?qū)⑵滢D(zhuǎn)換成C語(yǔ)句。SQL Server的預(yù)處理程序是nsqlprep.exe。 nsqlprep.exe在SQL Server安裝日錄的MSSQL\Binn下。若SQL Server數(shù)據(jù)庫(kù)采用的是默任安裝方式,則需要把binn.rar的內(nèi)容拷貝到指定目錄下。

Microsoft SQL Server 2000提供的預(yù)編譯程序nsqlprep.exe,用于對(duì)嵌入式SQL程序進(jìn)行預(yù)編譯處理,生成C語(yǔ)言源程序.實(shí)際上就是將嵌入式SQL程序中的嵌入式SQL語(yǔ)句替換為對(duì)運(yùn)行時(shí)庫(kù)文件Sqlakw32. dll的函數(shù)調(diào)用,接著運(yùn)行時(shí)庫(kù)文件調(diào)用動(dòng)態(tài)連接庫(kù)Ntwdblib. dll通過(guò)網(wǎng)絡(luò)來(lái)存取Microsoft SQL Server 2000數(shù)據(jù)庫(kù)服務(wù)器.

預(yù)編譯程序nsqlprep的常用語(yǔ)法為:

nsqlprep ESQL_File /SQLACCESS /DB server_name.database_name /PASS login.password

其中ESQL_File是要預(yù)編譯的嵌入式SQL程序;/SQLACCESS通知nsqlprep自動(dòng)地為嵌入式SQL程序中的靜態(tài)SQL語(yǔ)句創(chuàng)建相應(yīng)的存儲(chǔ)過(guò)程;/DB server_name.database_name指明要連接的服務(wù)器以及數(shù)據(jù)庫(kù)名稱(chēng);/PASS login.password給出登錄名及相應(yīng)的口令.

下面的程序demo.sqc實(shí)現(xiàn)了從數(shù)據(jù)庫(kù)服務(wù)器hushaobo的數(shù)據(jù)庫(kù)pubs中的authors表中讀取au_lname為white的人對(duì)應(yīng)的 au_fname 值,并保存到變量first_name 中顯示出來(lái)。(連接數(shù)據(jù)庫(kù)的用戶為sa,對(duì)應(yīng)密碼為1982)

#includestdio.h

void main()

{

EXEC SQL BEGIN DECLARE SECTION;

char first_name[40];

char last_name[]="White";

EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO hushaobo.pubs

USER sa.1982;

EXEC SQL SELECT au_fname INTO :first_name from authors WHERE au_lname = :last_name;

EXEC SQL DISCONNECT ALL;

printf("first name: %s \n",first_name);

}

在命令行下運(yùn)行:nsqlprep demo.sqc /SQLACCESS /DB hushaobo.pubs /PASS sa.1982

則生成demo.c,將該文件添加到VC工程中編譯即可。

3、編譯,連接與運(yùn)行

在VC++6.0中創(chuàng)建一個(gè) "WIN32 Console Application"的Proiect,然后將預(yù)編譯生成的c文件加入Proiect,編譯連接即可生成訪問(wèn)SQL Server的可執(zhí)行程序。 Visual C++ 6.0進(jìn)行編譯連接時(shí)需要用到動(dòng)態(tài)鏈接庫(kù)SQLakw32.d11與SQLaiw32.d11;盡管這兩個(gè)文件已經(jīng)隨同binn.rar被拷貝到SQLServer安裝目錄的MSSQL\Binn文件夾下,但仍然需要把它們的路徑加到系統(tǒng)路徑變量中,以使得程序運(yùn)行時(shí)能找到它們,具體添加方法如下:

方法1:把這兩個(gè)文件拷貝到操作系統(tǒng)目錄下的system32子目錄中。

方法2:我的電腦-屬性-高級(jí)-環(huán)境變量-path-編輯,在變量值中加入路徑值;新路徑與已有路徑間用;間隔。

注意調(diào)適程序時(shí),文件名中不要包含cursor,否則可能會(huì)出錯(cuò)。

sqlserver

摘自:

【IT專(zhuān)家網(wǎng)獨(dú)家】SQL Server用戶自定義函數(shù)和存儲(chǔ)過(guò)程有類(lèi)似的功能,都可以創(chuàng)建捆綁SQL語(yǔ)句,存儲(chǔ)在server中供以后使用。這樣能夠極大地提高工作效率,通過(guò)以下的各種做法可以減少編程所需的時(shí)間:

重復(fù)使用編程代碼,減少編程開(kāi)發(fā)時(shí)間。

隱藏SQL細(xì)節(jié),把SQL繁瑣的工作留給數(shù)據(jù)庫(kù)開(kāi)發(fā)人員,而程序開(kāi)發(fā)員則集中處理高級(jí)編程語(yǔ)言。

維修集中化,可以在一個(gè)地方做業(yè)務(wù)上的邏輯修改,然后讓這些修改自動(dòng)應(yīng)用到所有相關(guān)程序中。

乍看之下,用戶自定義函數(shù)和存儲(chǔ)過(guò)程的功能似乎一摸一樣。但是,其實(shí)這兩者之間還有一些雖然細(xì)微但是很重要的差異:

存儲(chǔ)過(guò)程是使用EXEC命令獨(dú)立調(diào)用的,而用戶自定義函數(shù)是在另一個(gè)SQL語(yǔ)句中調(diào)用的。

l存儲(chǔ)程序是允許用戶和程序去使用存儲(chǔ)過(guò)程,而不是允許其存取表格,這樣能夠增強(qiáng)程序安全性。與標(biāo)準(zhǔn)的SQL Server相比,存儲(chǔ)程序限制用戶行動(dòng)權(quán)限方面更為細(xì)化。例如,如果你有一個(gè)貨存表格,每次賣(mài)出一個(gè)貨物收銀員都要對(duì)表格進(jìn)行更新一次(從貨存中把該貨品減去一件)。你可以給收銀員設(shè)置權(quán)限,允許其使用decrement_item存儲(chǔ)過(guò)程,而不是允許他們有任意修改或村表格的權(quán)限。

函數(shù)必須始終返回一個(gè)值(一個(gè)標(biāo)量值或一個(gè)表格)。而存儲(chǔ)過(guò)程可以返回一個(gè)標(biāo)量值、一個(gè)表值或無(wú)需返回值。

總而言之,存儲(chǔ)程序?qū)QL Server開(kāi)發(fā)員來(lái)說(shuō)是最有價(jià)值的寶物之一,用于數(shù)據(jù)庫(kù)中,能夠大大的提高工作效率,增強(qiáng)安全性,絕對(duì)超值。

當(dāng)前名稱(chēng):sqlserver預(yù)編譯,什么是sql預(yù)編譯
標(biāo)題URL:http://muchs.cn/article28/hcigcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站策劃、用戶體驗(yàn)、定制網(wǎng)站、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名