最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

理解Mysql prepare預(yù)處理語(yǔ)句

 更新時(shí)間:2016年03月23日 11:58:59   作者:pursuer.chen  
這篇文章主要幫助大家學(xué)習(xí)理解Mysql prepare預(yù)處理語(yǔ)句,對(duì)prepare預(yù)處理語(yǔ)句感興趣的小伙伴們可以參考一下

MySQL 5.1對(duì)服務(wù)器一方的預(yù)制語(yǔ)句提供支持。如果您使用合適的客戶(hù)端編程界面,則這種支持可以發(fā)揮在MySQL 4.1中實(shí)施的高效客戶(hù)端/服務(wù)器二進(jìn)制協(xié)議的優(yōu)勢(shì)。候選界面包括MySQL C API客戶(hù)端庫(kù)(用于C程序)、MySQL Connector/J(用于Java程序)和MySQL Connector/NET。例如,C API可以提供一套能組成預(yù)制語(yǔ)句API的函數(shù)調(diào)用。其它語(yǔ)言界面可以對(duì)使用了二進(jìn)制協(xié)議(通過(guò)在C客戶(hù)端庫(kù)中鏈接)的預(yù)制語(yǔ)句提供支持。對(duì)預(yù)制語(yǔ)句,還有一個(gè)SQL界面可以利用。與在整個(gè)預(yù)制語(yǔ)句API中使用二進(jìn)制協(xié)議相比,本界面效率沒(méi)有那么高,但是它不要求編程,因?yàn)樵赟QL層級(jí),可以直接利用本界面

· 當(dāng)您無(wú)法利用編程界面時(shí),您可以使用本界面。

· 有些程序允許您發(fā)送SQL語(yǔ)句到將被執(zhí)行的服務(wù)器中,比如mysql客戶(hù)端程序。您可以從這些程序中使用本界面。

· 即使客戶(hù)端正在使用舊版本的客戶(hù)端庫(kù),您也可以使用本界面。唯一的要求是,您能夠連接到一個(gè)支持預(yù)制語(yǔ)句SQL語(yǔ)法的服務(wù)器上。

預(yù)制語(yǔ)句的SQL語(yǔ)法在以下情況下使用:

· 在編代碼前,您想要測(cè)試預(yù)制語(yǔ)句在您的應(yīng)用程序中運(yùn)行得如何?;蛘咭苍S一個(gè)應(yīng)用程序在執(zhí)行預(yù)制語(yǔ)句時(shí)有問(wèn)題,您想要確定問(wèn)題是什么。

· 您想要?jiǎng)?chuàng)建一個(gè)測(cè)試案例,該案例描述了您使用預(yù)制語(yǔ)句時(shí)出現(xiàn)的問(wèn)題,以便您編制程序錯(cuò)誤報(bào)告。

· 您需要使用預(yù)制語(yǔ)句,但是您無(wú)法使用支持預(yù)制語(yǔ)句的編程API。

預(yù)制語(yǔ)句的SQL語(yǔ)法基于三個(gè)SQL語(yǔ)句:

PREPARE stmt_name FROM preparable_stmt;
 
EXECUTE stmt_name [USING @var_name [, @var_name] ...];
 
{DEALLOCATE | DROP} PREPARE stmt_name;

PREPARE語(yǔ)句用于預(yù)備一個(gè)語(yǔ)句,并賦予它名稱(chēng)stmt_name,借此在以后引用該語(yǔ)句。語(yǔ)句名稱(chēng)對(duì)案例不敏感。preparable_stmt可以是一個(gè)文字字符串,也可以是一個(gè)包含了語(yǔ)句文本的用戶(hù)變量。該文本必須展現(xiàn)一個(gè)單一的SQL語(yǔ)句,而不是多個(gè)語(yǔ)句。使用本語(yǔ)句,‘?'字符可以被用于制作參數(shù),以指示當(dāng)您執(zhí)行查詢(xún)時(shí),數(shù)據(jù)值在哪里與查詢(xún)結(jié)合在一起。‘?'字符不應(yīng)加引號(hào),即使您想要把它們與字符串值結(jié)合在一起,也不要加引號(hào)。參數(shù)制作符只能被用于數(shù)據(jù)值應(yīng)該出現(xiàn)的地方,不用于SQL關(guān)鍵詞和標(biāo)識(shí)符等。

如果帶有此名稱(chēng)的預(yù)制語(yǔ)句已經(jīng)存在,則在新的語(yǔ)言被預(yù)備以前,它會(huì)被隱含地解除分配。這意味著,如果新語(yǔ)句包含一個(gè)錯(cuò)誤并且不能被預(yù)備,則會(huì)返回一個(gè)錯(cuò)誤,并且不存在帶有給定名稱(chēng)語(yǔ)句。

預(yù)制語(yǔ)句的范圍是客戶(hù)端會(huì)話(huà)。在此會(huì)話(huà)內(nèi),語(yǔ)句被創(chuàng)建。其它客戶(hù)端看不到它。

在預(yù)備了一個(gè)語(yǔ)句后,您可使用一個(gè)EXECUTE語(yǔ)句(該語(yǔ)句引用了預(yù)制語(yǔ)句名稱(chēng))來(lái)執(zhí)行它。如果預(yù)制語(yǔ)句包含任何參數(shù)制造符,則您必須提供一個(gè)列舉了用戶(hù)變量(其中包含要與參數(shù)結(jié)合的值)的USING子句。參數(shù)值只能有用戶(hù)變量提供,USING子句必須準(zhǔn)確地指明用戶(hù)變量。用戶(hù)變量的數(shù)目與語(yǔ)句中的參數(shù)制造符的數(shù)量一樣多。

您可以多次執(zhí)行一個(gè)給定的預(yù)制語(yǔ)句,在每次執(zhí)行前,把不同的變量傳遞給它,或把變量設(shè)置為不同的值。

要對(duì)一個(gè)預(yù)制語(yǔ)句解除分配,需使用DEALLOCATE PREPARE語(yǔ)句。嘗試在解除分配后執(zhí)行一個(gè)預(yù)制語(yǔ)句會(huì)導(dǎo)致錯(cuò)誤。

如果您終止了一個(gè)客戶(hù)端會(huì)話(huà),同時(shí)沒(méi)有對(duì)以前已預(yù)制的語(yǔ)句解除分配,則服務(wù)器會(huì)自動(dòng)解除分配。

以下SQL語(yǔ)句可以被用在預(yù)制語(yǔ)句中:CREATE TABLE, DELETE, DO, INSERT, REPLACE, SELECT, SET, UPDATE和多數(shù)的SHOW語(yǔ)句。目前不支持其它語(yǔ)句。

以下例子顯示了預(yù)備一個(gè)語(yǔ)句的兩種方法。該語(yǔ)句用于在給定了兩個(gè)邊的長(zhǎng)度時(shí),計(jì)算三角形的斜邊。

第一個(gè)例子顯示如何通過(guò)使用文字字符串來(lái)創(chuàng)建一個(gè)預(yù)制語(yǔ)句,以提供語(yǔ)句的文本:

mysql> PREPARE stmt1 FROM 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> SET @a = 3;
mysql> SET @b = 4;
mysql> EXECUTE stmt1 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|     5 |
+------------+
mysql> DEALLOCATE PREPARE stmt1;

第二個(gè)例子是相似的,不同的是提供了語(yǔ)句的文本,作為一個(gè)用戶(hù)變量:

mysql> SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
mysql> PREPARE stmt2 FROM @s;
mysql> SET @a = 6;
mysql> SET @b = 8;
mysql> EXECUTE stmt2 USING @a, @b;
+------------+
| hypotenuse |
+------------+
|     10 |
+------------+
mysql> DEALLOCATE PREPARE stmt2;

對(duì)于已預(yù)備的語(yǔ)句,您可以使用位置保持符。以下語(yǔ)句將從tb1表中返回一行:

mysql> SET @a=1;

mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?";

mysql> EXECUTE STMT USING @a;

以下語(yǔ)句將從tb1表中返回第二到第六行:

mysql> SET @skip=1; SET @numrows=5;

mysql> PREPARE STMT FROM "SELECT * FROM tbl LIMIT ?, ?";

mysql> EXECUTE STMT USING @skip, @numrows;

預(yù)制語(yǔ)句的SQL語(yǔ)法不能被用于帶嵌套的風(fēng)格中。也就是說(shuō),被傳遞給PREPARE的語(yǔ)句本身不能是一個(gè)PREPARE, EXECUTE或DEALLOCATE PREPARE語(yǔ)句。

預(yù)制語(yǔ)句的SQL語(yǔ)法與使用預(yù)制語(yǔ)句API調(diào)用不同。例如,您不能使用mysql_stmt_prepare() C API函數(shù)來(lái)預(yù)備一個(gè)PREPARE, EXECUTE或DEALLOCATE PREPARE語(yǔ)句。

預(yù)制語(yǔ)句的SQL語(yǔ)法可以在已存儲(chǔ)的過(guò)程中使用,但是不能在已存儲(chǔ)的函數(shù)或觸發(fā)程序中使用。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • Mysql指定日期區(qū)間的提取方法

    Mysql指定日期區(qū)間的提取方法

    這篇文章主要介紹了Mysql指定日期區(qū)間的提取方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-07-07
  • MySQL鎖情況查看命令

    MySQL鎖情況查看命令

    本文主要介紹了MySQL鎖情況查看命令,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決

    Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決

    MySQL是由Oracle公司開(kāi)發(fā)的開(kāi)源SQL數(shù)據(jù)庫(kù)管理系統(tǒng),下面這篇文章主要給大家介紹了關(guān)于在Centos7下無(wú)法遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)的原因與解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-09-09
  • MySQL復(fù)制表的三種方式(小結(jié))

    MySQL復(fù)制表的三種方式(小結(jié))

    這篇文章主要介紹了MySQL復(fù)制表的三種方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE

    mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE

    這篇文章主要介紹了mysql實(shí)現(xiàn)將date字段默認(rèn)值設(shè)置為CURRENT_DATE問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • mysql 終結(jié)點(diǎn)映射器中沒(méi)有更多的終結(jié)點(diǎn)可用的解決方法

    mysql 終結(jié)點(diǎn)映射器中沒(méi)有更多的終結(jié)點(diǎn)可用的解決方法

    在安裝MySQL的時(shí)候遇到“終結(jié)點(diǎn)映射器中沒(méi)有更多的終結(jié)點(diǎn)可用”提示
    2009-03-03
  • MySQL主從同步+binlog詳解

    MySQL主從同步+binlog詳解

    這篇文章主要介紹了MySQL主從同步+binlog的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • MySQL禁用ONLY_FULL_GROUP_BY模式的三種方法

    MySQL禁用ONLY_FULL_GROUP_BY模式的三種方法

    本文主要文章介紹了在MySQL啟用了ONLY_FULL_GROUP_BY模式導(dǎo)致的問(wèn)題及解決方法,提供了三種方法,下面就來(lái)詳細(xì)的介紹一下實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2025-11-11
  • 通過(guò)實(shí)例分析MySQL中的四種事務(wù)隔離級(jí)別

    通過(guò)實(shí)例分析MySQL中的四種事務(wù)隔離級(jí)別

    SQL標(biāo)準(zhǔn)定義了4種隔離級(jí)別,包括了一些具體規(guī)則,用來(lái)限定事務(wù)內(nèi)外的哪些改變是可見(jiàn)的,哪些是不可見(jiàn)的。下面這篇文章通過(guò)實(shí)例詳細(xì)的給大家分析了關(guān)于MySQL中的四種事務(wù)隔離級(jí)別的相關(guān)資料,需要的朋友可以參考下。
    2017-08-08
  • MySQL主從復(fù)制配置心跳功能介紹

    MySQL主從復(fù)制配置心跳功能介紹

    這篇文章主要介紹了MySQL主從復(fù)制配置心跳功能介紹,解決Slave has read all relay log; waiting for the slave I/O thread to update it問(wèn)題,需要的朋友可以參考下
    2014-06-06

最新評(píng)論

区。| 阳江市| 清新县| 南雄市| 漾濞| 抚州市| 甘孜| 休宁县| 吴忠市| 崇礼县| 肇庆市| 静海县| 桐城市| 孟州市| 施秉县| 澄城县| 建阳市| 泌阳县| 苍山县| 光山县| 定陶县| 晋江市| 紫金县| 巢湖市| 中方县| 襄城县| 淳安县| 和龙市| 新宾| 皮山县| 南部县| 象州县| 耒阳市| 安义县| 济阳县| 封丘县| 阿拉善左旗| 高台县| 隆德县| 驻马店市| 中山市|