首页 > 解决方案 > 这个来自 MSSQL 的存储过程在转换为 MySql 后不起作用

问题描述

将此代码从 MSSQL 转换为 MySql 后,它拒绝运行,错误是未声明变量。

这是来自 MSSQL 的代码

CREATE PROC [dbo].[spp_report_connection_setup]
@CompanyCode varchar(50)
As
Begin

SELECT Connection = 'Data Source='+ServerName+';Initial Catalog='+DatabaseName+';User ID='+UserName+';Password='+Password,
    CompanyName = (select top 1 Name from cor_company where Code = @CompanyCode)
  FROM [dbo].[cor_database]
  WHERE CompanyCode = @CompanyCode

End

这是转换后的代码,但它说。没有为连接声明变量

CREATE PROCEDURE spp_report_connection_setup (
p_CompanyCode varchar(50))
Begin

-- SQLINES LICENSE FOR EVALUATION USE ONLY
SELECT CONCAT('Data Source=',ServerName,';Initial Catalog=',DatabaseName,';User ID=',UserName,';Password=',Password),
 (select top 1 Name from cor_company where Code = p_CompanyCode) INTO Connection, CompanyName
  FROM cor_database
  WHERE CompanyCode = p_CompanyCode;

End;

这是我调整的。但它仍然给出错误说检查你的这个版本的语法。

CREATE PROCEDURE spp_report_connection_setup (
p_CompanyCode varchar(50))
Begin
declare Connection varchar(100); declare CompanyName varchar(100);
-- SQLINES LICENSE FOR EVALUATION USE ONLY
SELECT CONCAT('Data Source=',ServerName,';Initial Catalog=',DatabaseName,';User ID=',UserName,';Password=',Password),
 (select Name from cor_company where Code = p_CompanyCode Limit 1) INTO Connection, CompanyName
  FROM cor_database
  WHERE CompanyCode = p_CompanyCode;

End;

请问我错过了什么

标签: mysql

解决方案


推荐阅读