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

MYSQL與SQLserver之間存儲(chǔ)過程的轉(zhuǎn)換方式

 更新時(shí)間:2022年11月28日 09:05:01   作者:AI_Frank  
這篇文章主要介紹了MYSQL與SQLserver之間存儲(chǔ)過程的轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MYSQL與SQLserver之間存儲(chǔ)過程的轉(zhuǎn)換

首先先放兩個(gè)存儲(chǔ)過程來進(jìn)行對(duì)比

mysql存儲(chǔ)過程

CREATE DEFINER=`root`@`%` PROCEDURE `searchProduct`(
?? ?
?? ?IN cone VARCHAR ( 30 ),
?? ?IN ctow VARCHAR ( 30 ),
?? ?
?? ?IN page INT,
?? ?IN size INT
?? ?)
BEGIN
?? ? ?? ?set @s='SELECT * ? FROM ?? ?productclass where status=0';
?? ??
-- ? ? if(pname is not null) and pname!=''
-- ? ? then set @s=concat(@s,' and product LIKE \'','%',pname,'%','\'');
-- ? ? end if;
? ? if(cone is not null) and cone!=''
? ? then set @s=concat(@s,' and class1 ?LIKE \'','%',cone,'%','\'');
? ? end if;
? ? if(ctow is not null) and ctow!=''
? ? then set @s=concat(@s,' and class2 ?LIKE \'','%',ctow,'%','\'');
? ? end if;
?? ??? ?
?? ??? ?
?? ??? ?set @s=concat(@s,' ORDER BY class1,class2,class3,class4');
?? ??? ?if(size>0) then
?? ??? ?set @s=concat(@s,' limit ',(page-1)*size,',',size);
?? ??? ?end if;
? ? -- 拼接完成后可以調(diào)用 select @s 語句,查看最終拼接的sql語句是否正確
? ? prepare stmt from @s;-- 預(yù)編譯一條sql語句,并命名為stmt
? ? execute stmt;-- 執(zhí)行預(yù)編譯sql
END

sqlserver存儲(chǔ)過程

ALTER PROCEDURE [dbo].[searchProduct]
@cone VARCHAR ( 30 ),@ctow VARCHAR ( 30 ),@page INT,@size INT
AS
BEGIN
?? ?-- routine body goes here, e.g.
?? ?-- SELECT 'Navicat for SQL Server'
?? ?declare @s Nvarchar(MAX);
?? ?set @s='SELECT * ? FROM ?? ?productclass where status=0';
?? ??
-- ? ? if(pname is not null) and pname!=''
-- ? ? then set @s=concat(@s,' and product LIKE \'','%',pname,'%','\'');
-- ? ? end if;
? ? if(@cone is not null) and @cone!=''
?? ??? ?BEGIN
?? ??? ??? ?set @s=concat(@s,' and class1 ?LIKE ','''%',@cone,'%''');
? ? END
? ? if(@ctow is not null) and @ctow!=''
? ? BEGIN
?? ??? ??? ?set @s=concat(@s,' and class2 ?LIKE ','''%',@ctow,'%''');
? ? END
?? ??? ?
?? ??? ?
?? ??? ?set @s=concat(@s,' ORDER BY class1,class2,class3,class4');
?? ??? ?if(@size>0)
?? ??? ?BEGIN
?? ??? ??? ?set @s=concat(@s,'( select top ',@size,' id from productclass?
?? ??? ??? ??? ??? ??? ??? ?where id not in ( ?
?? ??? ??? ??? ??? ??? ??? ?select top ', (@page-1)*@size,' id from productclass ?
?? ??? ??? ??? ??? ?))')
?? ??? ?END
? ? -- 拼接完成后可以調(diào)用 select @s 語句,查看最終拼接的sql語句是否正確
?? ??? ?print(@s)
?? ??? ?EXEC sp_executesql @s;
END

綜合以上同一功能函數(shù)在不同的數(shù)據(jù)庫中的規(guī)則不同,總結(jié)如下幾點(diǎn)區(qū)別與相互之間的轉(zhuǎn)換規(guī)則:

(1)對(duì)于輸入?yún)?shù)來說

  • mysql使用IN cone VARCHAR ( 30 )
  • sqlserver使用@cone VARCHAR ( 30 )

注意對(duì)于參數(shù)在下面語句使用中,mysql可以直接使用名稱,二sqlserver要加上@符號(hào)

(2)對(duì)于語句的set來說

  • mysql可以直接set 變量
  • sqlserver需要在之前事先聲明變量后才可以使用

(3)對(duì)于if語句的執(zhí)行

  • mysql使用if 過程 endif
  • sqlserver使用 if begin 過程 end

(4)對(duì)于定義sql語句的執(zhí)行

  • mysql使用prepare stmt from @s; execute stmt;進(jìn)行預(yù)編譯和執(zhí)行
  • sqlserver使用EXEC sp_executesql @s

注意:sqlserver也可以使用exec(@s),這樣的話變量聲明一般是varchar類型,若使用sp_executesql必須是Nvarchar的定義類型,具體的區(qū)別可以自行百度查詢

SQLserver轉(zhuǎn)MYSQL存儲(chǔ)過程的經(jīng)驗(yàn)

總體來說,sql sever和Mysql的存儲(chǔ)過程的思路都是一樣的,但是在語法和結(jié)構(gòu)上還是有很大的區(qū)別的,可以使用如下的轉(zhuǎn)換方式。

1. 存儲(chǔ)過程的定義方式存在區(qū)別

CREATE proc p1
aa int
bb varchar(255) output
as
CREATE PROCEDURE p1(
in aa int,
out bb varchar(255)
) begin
statement_list
end;

2. 批處理分隔符存在差異

GOdelimiter $$

3. 可直接替換的關(guān)鍵字

smalldatetimedatetime
moneyDECIMAL(18,4)
numericDECIMAL
max8000
isnullifnull
getdatenow
dbo.

4. select語句起別名的方式有區(qū)別

select 'sunday' day;SELECT 'sunday' AS day;

5. if語句的結(jié)構(gòu)存在區(qū)別

if condition
statement
else
statement
if condition then
statement
else
statement
end if;

6. cast語句的目標(biāo)類型存在區(qū)別

目標(biāo)類型可以是任意類型目標(biāo)類型可以是以下類型之一:BINARY,CHAR,DATE,DATETIME,TIME,DECIMAL,SIGNED,UNSIGNED

7. 動(dòng)態(tài)SQL執(zhí)行語句的書寫方式存在區(qū)別

exec(@sql)PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

8. 調(diào)用其它存儲(chǔ)過程的方式存在區(qū)別

exec p1 @v1,@v2,@v3 outputcall p1(hy_v1,hy_v2,@v3 output );

9. 創(chuàng)建臨時(shí)表的書寫方式存在區(qū)別

select 表字段 into #臨時(shí)表名稱
from 正常表
CREATE TEMPORARY TABLE IF NOT EXISTS 臨時(shí)表名稱 AS
SELECT 表字段名稱 FROM 表名稱;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql索引結(jié)合explain分析示例

    Mysql索引結(jié)合explain分析示例

    本文主要介紹了Mysql索引結(jié)合explain分析示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • MySQL?Workbench菜單漢化為中文的簡(jiǎn)單操作方法

    MySQL?Workbench菜單漢化為中文的簡(jiǎn)單操作方法

    這篇文章主要給大家介紹了關(guān)于MySQL?Workbench菜單漢化為中文的簡(jiǎn)單操作方法,文中通過圖文及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL?Workbench具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-11-11
  • MySQL 如何連接對(duì)應(yīng)的客戶端進(jìn)程

    MySQL 如何連接對(duì)應(yīng)的客戶端進(jìn)程

    這篇文章主要介紹了MySQL 如何連接對(duì)應(yīng)的客戶端進(jìn)程,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-11-11
  • SQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫檢索數(shù)據(jù)的直接轉(zhuǎn)換計(jì)算

    SQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫檢索數(shù)據(jù)的直接轉(zhuǎn)換計(jì)算

    這篇文章主要介紹了SQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫檢索數(shù)據(jù)的直接轉(zhuǎn)換計(jì)算,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • MySQL帶你秒懂索引下推

    MySQL帶你秒懂索引下推

    如果你在面試中,聽到MySQL5.6”、“索引優(yōu)化” 之類的詞語,你就要立馬get到,這個(gè)問的是“索引下推”。本文就來分分享這個(gè)小知識(shí)點(diǎn)索引下推
    2021-09-09
  • MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    MYSQL Left Join優(yōu)化(10秒優(yōu)化到20毫秒內(nèi))

    在實(shí)際開發(fā)中,相信大多數(shù)人都會(huì)用到j(luò)oin進(jìn)行連表查詢,但是有些人發(fā)現(xiàn),用join好像效率很低,而且驅(qū)動(dòng)表不同,執(zhí)行時(shí)間也不同。那么join到底是如何執(zhí)行的呢,本文就詳細(xì)的介紹一下
    2021-12-12
  • mysql中secure_file_priv=不生效問題及解決

    mysql中secure_file_priv=不生效問題及解決

    這篇文章主要介紹了mysql中secure_file_priv=不生效問題及解決方案,以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家,
    2024-01-01
  • 通過mysqladmin遠(yuǎn)程管理mysql的方法

    通過mysqladmin遠(yuǎn)程管理mysql的方法

    在一些特殊場(chǎng)景下,想要遠(yuǎn)程重啟mysql,以便讓某些修改能及時(shí)的生效,但是mysql并沒有提供遠(yuǎn)程重啟的功能,唯一能做的就是遠(yuǎn)程關(guān)閉mysql服務(wù)
    2013-03-03
  • node連接mysql數(shù)據(jù)庫遇到的問題和解決方案

    node連接mysql數(shù)據(jù)庫遇到的問題和解決方案

    這篇文章主要介紹了node連接mysql數(shù)據(jù)庫遇到的問題和解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • mysql 查看表結(jié)構(gòu)數(shù)據(jù)的實(shí)現(xiàn)

    mysql 查看表結(jié)構(gòu)數(shù)據(jù)的實(shí)現(xiàn)

    在MySQL數(shù)據(jù)庫中,我們經(jīng)常需要查看表的結(jié)構(gòu)和數(shù)據(jù)信息,以便了解表的字段定義、索引情況等,本文主要介紹了mysql 查看表結(jié)構(gòu)數(shù)據(jù)的實(shí)現(xiàn),感興趣的可以了解一下
    2024-05-05

最新評(píng)論

嘉定区| 于田县| 彝良县| 龙口市| 古田县| 徐水县| 鸡东县| 富顺县| 仙游县| 安阳市| 喀喇沁旗| 丹阳市| 突泉县| 本溪市| 荃湾区| 龙井市| 昭觉县| 百色市| 湖北省| 呼玛县| 都安| 雷山县| 永福县| 凉城县| 江川县| 绍兴市| 商南县| 增城市| 吴川市| 辛集市| 达尔| 保靖县| 周口市| 江孜县| 开封市| 布拖县| 武乡县| 怀安县| 新闻| 萍乡市| 赤水市|