MySQL用户定义变量与MSSQL服务器用户定义变量的比较

MySQL用户定义变量与MSSQL服务器用户定义变量的比较,mysql,sql-server,Mysql,Sql Server,因此,现在我从SQLServer商店转移到MySQL商店,我看到的第一件不同之处是,用户定义的变量有点不稳定。我发现必须在SQLServer中声明所有变量有点烦人,但相比之下,用户定义的变量似乎非常快速和松散 例如,如果在sql server中使用未声明的变量,则会出现错误。如果我在MySQL中使用一个未声明的变量,我会在表中插入一堆空值。有没有办法使变量的行为更像sql server中的变量?我不知道有一种“机箱中”的方式。我假设你在写脚本或程序。我建议您在适当的地方验证所有变量。然后,当变量

因此,现在我从SQLServer商店转移到MySQL商店,我看到的第一件不同之处是,用户定义的变量有点不稳定。我发现必须在SQLServer中声明所有变量有点烦人,但相比之下,用户定义的变量似乎非常快速和松散

例如,如果在sql server中使用未声明的变量,则会出现错误。如果我在MySQL中使用一个未声明的变量,我会在表中插入一堆空值。有没有办法使变量的行为更像sql server中的变量?

我不知道有一种“机箱中”的方式。我假设你在写脚本或程序。我建议您在适当的地方验证所有变量。然后,当变量为null时,可以引发错误(使用信号)。遗憾的是,您必须对其进行编码,但它应该做您想做的事情,并且您应该将错误返回到您的应用程序,然后您可以对其进行解析

我不知道有一种“盒子里”的方式。我假设你在写脚本或程序。我建议您在适当的地方验证所有变量。然后,当变量为null时,可以引发错误(使用信号)。遗憾的是,您必须对其进行编码,但它应该做您想做的事情,并且您应该将错误返回到您的应用程序,然后您可以对其进行解析

CREATE PROCEDURE foo (VAL INT)
BEGIN
    IF val IS NULL THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'An error occurred';
    END IF;
END