SqlServerデータベース・ストレージ・プロシージャのMySqlデータベースへの移行で発生した問題
1819 ワード
SqlServerデータベースとMySqlデータベースのストレージ・プロシージャの構文が異なるため、ストレージ・プロシージャを移行する際に多くの詳細な問題に注意する必要があるため、1、転送パラメータを記録する:1 sqlserverストレージ・プロシージャの転送パラメータに@記号を付ける.例:
②myqslストアド・プロシージャのパラメータに@記号を付けない例:
2、ストレージプロセスの開始:sqlserverストレージプロセスの開始はBEGINの前にASがあり、ENDの終了後にGOがあり、mysqlの開始はASがなく、終了もGOがない.3、パラメータの宣言:1 sqlserverでパラメータを宣言すると、1行で宣言でき、@記号が付きます.
例:
②mysqlでパラメータを宣言するには、各パラメータに@記号がなく、セミコロンで区切られたdeclare文を宣言する必要があります.
例:
4、パラメータの使用:mysqlでパラメータを宣言するときは@記号はありませんが、保存中に使用するときは@記号もありません.
5、if文:①sqlserverのif条件の文はBEGIN-ENDブロックに含めるべきである.例:
②if文の後にthenで文ブロックの内容を実行し、BEGIN-ENDブロックに含めず、末尾にend ifを用い、最後にセミコロンを付けることに注意する.例:
6、注釈:
①sqlserverの行注記記号は--
②mysqlでの一方通行注釈も--ですが、後ろに必ずスペースがあることに注意してください.私は移行時にスペースを書いていません.注釈が効かなくて、半日ToTに困惑しました.
7、システムの現在時間を取得する:
1 sqlserverでシステムの現在時間を取得する関数はgetdate()である.
②mysqlでシステムの現在時刻を取得する関数はNOW()である.
8、ストレージプロセスを実行する:
①SqlServerはexec pro_name para1,para2
②mysqlはcall pro_name (para1,para2)
9、パラメータの使用:
①sqlserver既存のパラメータについては、すべて@記号で値付けと呼び出しを行えばよい.
②mysqlの格納プロセスは,付与時に@記号を用いる必要があるが,呼び出し時に@記号を付ける必要はない.
CREATE PROCEDURE [dbo].[Test]
@ParmA VARCHAR(50),
@ParmB INT
②myqslストアド・プロシージャのパラメータに@記号を付けない例:
create PROCEDURE Con_InsertDevicecontrollog(ParmA VARCHAR(50),ParmB INT)
2、ストレージプロセスの開始:sqlserverストレージプロセスの開始はBEGINの前にASがあり、ENDの終了後にGOがあり、mysqlの開始はASがなく、終了もGOがない.3、パラメータの宣言:1 sqlserverでパラメータを宣言すると、1行で宣言でき、@記号が付きます.
例:
DECLARE @a INT,@a INT
②mysqlでパラメータを宣言するには、各パラメータに@記号がなく、セミコロンで区切られたdeclare文を宣言する必要があります.
例:
DECLARE a INT;
DECLARE b INT;
4、パラメータの使用:mysqlでパラメータを宣言するときは@記号はありませんが、保存中に使用するときは@記号もありません.
5、if文:①sqlserverのif条件の文はBEGIN-ENDブロックに含めるべきである.例:
IF @a IS NULL
BEGIN
SELECT * FROM test_bable_a
END
ELSE
BEGIN
SELECT * FROM test_bable_b
END
②if文の後にthenで文ブロックの内容を実行し、BEGIN-ENDブロックに含めず、末尾にend ifを用い、最後にセミコロンを付けることに注意する.例:
IF (@a is NULL) then
SELECT * FROM test_bable_a;
ELSE
SELECT * FROM test_bable_b;
end if;
6、注釈:
①sqlserverの行注記記号は--
②mysqlでの一方通行注釈も--ですが、後ろに必ずスペースがあることに注意してください.私は移行時にスペースを書いていません.注釈が効かなくて、半日ToTに困惑しました.
7、システムの現在時間を取得する:
1 sqlserverでシステムの現在時間を取得する関数はgetdate()である.
②mysqlでシステムの現在時刻を取得する関数はNOW()である.
8、ストレージプロセスを実行する:
①SqlServerはexec pro_name para1,para2
②mysqlはcall pro_name (para1,para2)
9、パラメータの使用:
①sqlserver既存のパラメータについては、すべて@記号で値付けと呼び出しを行えばよい.
②mysqlの格納プロセスは,付与時に@記号を用いる必要があるが,呼び出し時に@記号を付ける必要はない.