微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从MS SQL Server调用需要longblob / varbinarymax参数的MySQL存储过程

如何解决从MS SQL Server调用需要longblob / varbinarymax参数的MySQL存储过程

我正在尝试通过链接服务器从MS sql Server调用MysqL存储过程。 MysqL存储过程将插入包含longblob的记录(从MS sql Server作为VARBINARY(Max)传入。我不确定我的@myFile参数周围的引号是否正确。这是我从sql Server端:

sql Server代码

EXEC('CALL InsertFiletest('+@ID+',"'+ @myName +'",'''+@myLocation+''',"'+ **@myFile** +'",' + '''2020-10-15 00:00:000''' +');') AT FILEX

我尝试在参数周围不使用引号,单引号,双引号并且没有运气,是否可以像这样传递VARBINARY(MAX)参数? `

DECLARE @ID INTEGER,@myName VARCHAR(200),@myLocation VARCHAR(200),@myFile VARBINARY(MAX),@insertDate datetime 
DECLARE file_cursor CURSOR FOR 
SELECT
   fileID,CAST(name AS VARCHAR(200)),CAST(location AS VARCHAR(200)),CAST([file] AS VARBINARY(MAX)) 
FROM
   cis_file 
WHERE
   fileid in
   (
      65502
   )
   --,65115,65116)
   OPEN file_cursor;
FETCH NEXT 
FROM
   file_cursor INTO @ID,@myName,@myLocation,@myFile WHILE @@FETCH_STATUS = 0 
   BEGIN
      EXEC('CALL InsertFiletest(' + @ID + ',"' + @myName + '","' + @myLocation + '","' + @myFile + '");') AT FILEX;
FETCH NEXT 
FROM
   file_cursor INTO @ID,@myFile 
   END
;
CLOSE file_cursor;
DEALLOCATE file_cursor;

}

MysqL存储过程

CREATE DEFINER=`ASIMysqLADMIN`@`%` PROCEDURE `InsertFiletest`(
        IN fileID int,IN name VARCHAR(200),IN location VARCHAR(200),IN file longblob

)
BEGIN
    INSERT INTO CIS_FILEX (name,location,file,fileID) VALUES ( name,fileID);
END

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。