Table of ContentsPreviousNext

Ispirer             Ispirer


Ispirer SQLWays データベース移行ソフトウェア

動的ステートメントの Microsoft SQL Server から Oracleへの変換

EXECUTE sp_executesql ステートメントは、Microsoft SQL Server でパラメータ付きの動的SQLステートメントを実行するのに使われます。EXECUTE sp_executesql の2番目の文字列パラメータでは動的SQLステートメントのパラメータとそのデータ型を記述します。

EXECUTE IMMEDIATE ステートメントは、Oracle でパラメータ付きの動的SQLステートメントを実行するのに使われます。入力パラメータは :N のように記述されます。 N は USING 句の中のパラメータの順番です。

SQLWays は Microsoft SQL Server のEXECUTE sp_executesql ステートメントを Oracle のEXECUTE IMMEDIATE に変換します。 SQLWays は MSQL 動的ステートメントの入力パラメータを Oracle の構文に変換します。SQLWays は Microsoft SQL Server の動的文字列のパラメータ名を Oracle でのパラメータ番号に変換します。

TABLE 42. 動的ステートメントの Microsoft SQL Server から Oracleへの変換
Microsoft SQL Server
Oracle
create procedure sql_sp_executesql as
declare @param int
execute sp_executesql           N'select * from tab1 where 
col1 = @param',
N'@param int',
@param = 35 
CREATE OR REPLACE PROCEDURE sql_sp_executesql AS
v_param NUMBER(10,0);
BEGIN
EXECUTE IMMEDIATE 'select * from tab1 where col1 = :1' 
USING 35;
end; 
create procedure sql_sp_executesql2 as
declare @InsOrderID int
declare @InsertString varchar(50)
SET @InsertString = N'INSERT INTO tab1' +
' VALUES (@InsOrderID)'
EXEC sp_executesql @InsertString,
N'@InsOrderID INT',   @InsOrderID 
CREATE OR REPLACE PROCEDURE sql_sp_executesql2 AS
v_InsOrderID NUMBER(10,0);
v_InsertString VARCHAR2(50);
BEGIN
v_InsertString := 'INSERT INTO tab1' ||
' VALUES (:1)';
EXECUTE IMMEDIATE v_InsertString USING v_InsOrderID;
END; 
create procedure sql_sp_executesql3 as
declare @val int
declare @InsertString varchar(50) 
SET @InsertString = N'DELETE FROM tab1 WHERE 
col1 = @par1 and col2=@par2'
EXEC sp_executesql @InsertString,
N'@par1 INT, @par2 INT',   @par1=1, @par2=@val 
CREATE OR REPLACE PROCEDURE sql_sp_executesql3 AS
v_val NUMBER(10,0);
v_InsertString VARCHAR2(50);
BEGIN
v_InsertString := 'DELETE FROM tab1 WHERE col1 = :1 and 
col2=:2' ;
EXECUTE IMMEDIATE v_InsertString
USING 1,v_val;
end; 


Table of ContentsPreviousNext
Ispirer             Ispirer
Copyright © 1999-2015 Ispirer Systems Ltd. Ispirer and SQLWays are trademarks of Ispirer Systems Ltd. All other product names may be trademarks of the respective companies. All rights reserved.