2009-08-19 90 views
0

我有两个数据库,一个MySQL 5,一个SQL Server 2000.我已经将MySQL数据库映射为MS SQL数据库中的链接服务器。我想从MS SQL数据库中调用保存在MySQL数据库中的存储过程。什么是正确的语法来做到这一点?在SQL Server 2000中甚至可能吗?如何从SQL Server 2000调用MySQL存储过程?

编辑:

我已经试过

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] 

即使当我填写数据库名称和所有者,我仍然得到一样的东西。

回答

0

我正在寻找类似的东西,所以即使这是过时的方式,我想我会回复其他人的搜索。 我找不到通过'...'表示法运行存储过程的方法,但这种方式正常工作

这里是MySQL中用于更新数据库xxx测试表中记录的条形码字段的简单存储过程鉴于ID:

DELIMITER $$

DROP PROCEDURE IF EXISTS xxxSTP_products_Update_barcode $$ CREATE DEFINER = root @localhost PROCEDURE xxx。 (IN)(IN xid INT,in xbarcode varchar(25))BEGIN UPDATE test SET barcode = xbarcode
WHERE id = xid; END $$

DELIMITER;

,这是在SQL Server中运行它(我通常有尝试catch块和其他错误捕获,但已经离开是出于对clarity.Note该MYSQL_XXX是从SQL设置链接服务器的程序服务器到MySQL:

CREATE PROCEDURE [DBO] [STP_XXX_MySQLBarcode_Update]

@product_id INT,@barcode VARCHAR(20) AS BEGIN SET NOCOUNT ON DECLARE @SQL 为nvarchar(1000)

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来调用?

相关问题