2009-08-19 19 views
0

私は2つのデータベース、1つのMySQL 5、1つのSQL Server 2000を持っています。私は、MySQLデータベースをMS SQLデータベースのリンクサーバーとしてマップしています。私はMS SQLデータベースからMySQLデータベースに保存されたストアドプロシージャを呼びたいと思います。これを行う正しい構文は何ですか? SQL Server 2000でも可能ですか?SQLストアドプロシージャをSQL Server 2000から呼び出す方法は?

編集:

私は

EXEC webpush...clear_tables 

を試みたが、私はちょうどこの背中を取得:

Could not execute procedure 'clear_tables' on remote server 'webpush'. 
[OLE/DB provider returned message: [MySQL][ODBC 3.51 Driver] 
[mysqld-5.0.46-enterprise-gpl-log]You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the 
right syntax to use near '?=call "clear_tables";1' at line 1] 

私はDBの名前と所有者を記入した場合でも、私はまだ取得同じこと。

答えて

0

私はこれと似たようなことをしていました。これは古くても、検索している人には返信を投稿すると思いました。 '...'表記でストアドプロシージャを実行する方法が見つかりませんでしたが、これは正常に動作します

ここでは、データベースxxxのテストテーブルのレコードのバーコードフィールドを更新するために、 IDを与え:

DROP PROCEDURE IFは xxxをEXISTS $$

DELIMITER。 STP_products_Update_barcode $$ デファイナー= root @localhost 手順 xxxを作成します。 STP_products_Update_barcode(IN xidcode、varchar(25)のxbarcode)BEGIN UPDATEテストSET barcode = xbarcode
WHERE id = xid; END $$

DELIMITER;

、これはそれを実行するには、SQL Serverの手順です(私は通常、TRYのCATCHブロックや他のエラートラップを持っていますが、MYSQL_XXXは、SQLから設定されたリンクサーバーであることをclarity.Noteのためのものを残してきましたMySQLへサーバー:

[DBO] PROCEDURE をCREATE [STP_XXX_MySQLBarcode_Update]

@product_id int型、@barcodeのVARCHAR(20) をASがDECLAREの@SQL のnvarchar(1000)

ON SET NOCOUNTを開始します。

SET @SQL = 'CALL STP_products_Update_barcode(' + CAST(@Product_id as varchar) + ','''+ @barcode +''')' EXEC (@SQL) AT MYSQL_XXX SET NOCOUNT OFF END GO

がここにフォーマッティングコードのこつ得ておらず、ビットは、現時点で急いでいますが、あなたのアイデアを得る ...

0

私はこのようにリンクサーバーを使用していませんが、リンクされたserver.database.owner.procedure構文を使用してexecを使用して呼び出すことはできませんか?