【问题标题】:Convert this stored procedure from T-SQL to MySQL syntax? [closed]将此存储过程从 T-SQL 转换为 MySQL 语法? [关闭]
【发布时间】:2013-12-05 09:15:50
【问题描述】:

我在执行中看到这个错误我在 SQL Server 中编写并希望将其转换为 mysql

1 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近'db_cursor FETCH NEXT FROM db_cursor INTO CityName,CountryName WHILE @@FETC' 在第 11 行 C:\Users\Dt4IT\Desktop\SQL.sql 2 1

delimiter #
Create Procedure ss()

begin
DECLARE CityName VARCHAR(100); -- filename for backup  
DECLARE CountryName VARCHAR(100);

DECLARE db_cursor CURSOR FOR  
SELECT CityName,(Select Country from d_country where CountryID = d_country.CountryID) 
FROM d_cities;

OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO CityName,CountryName 
WHILE @@FETCH_STATUS = 0   
BEGIN 
    Insert into ip_relations
    Select city_name,country_name,ip_from,ip_to from ip2location_db11 where 
    city_name = CityName and country_name = CountryName
FETCH NEXT FROM db_cursor INTO CityName,CountryName 
END   

CLOSE db_cursor   
DEALLOCATE db_cursor
end#
  delimiter ;

【问题讨论】:

    标签: mysql sql-server tsql


    【解决方案1】:

    您应该使用@ 作为这些局部变量的前缀:

    DECLARE @CityName VARCHAR(100), @CountryName VARCHAR(100);
    

    ...

    FETCH NEXT FROM db_cursor INTO @CityName,@CountryName
    

    ...

    【讨论】:

    • 您的答案不仅错误,而且您还混合了用户定义的变量(前面带有 @ 的变量)和本地定义的变量,这是行不通的。它们之间存在巨大差异。
    • 我的不好,读错了,以为他想从mysql转换为sql server。在那里你必须使用@local_variable。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2021-08-17
    • 2011-02-15
    相关资源
    最近更新 更多