【发布时间】:2014-03-28 10:31:50
【问题描述】:
我正在将 MS SQL 数据库更改为 MySQL。
我重写了一个存储过程,它接受一个名为@Account_Number 的参数。当我在 MySQL 中运行存储过程时,我收到以下消息:Error Code: 1048 Column 'Account_Number' cannot be null。
使用工作台,我终于修改并发现当我从存储过程中删除“@”并将它们重命名为 parmAccount_Number 时,存储过程将执行。
我真的想保持存储过程输入参数的名称相同,并且我不想回去重命名我的 MS SQL 参数......以防万一我想触发数据库。
我找不到关于 MySQL 对“@”做了什么的任何信息......
有没有办法让它与 "@" 一起工作?
编辑
声明存储过程
CREATE PROCEDURE `My_sp`(
`@Account_Number` varchar(8),....)
插入sp部分
insert into
My_Table
(
Account_Number, ...
)
values
(
@Account_Number,...
)
【问题讨论】:
-
是否有机会发布一些代码,可能是之前和之后的代码,以便我们看看你有什么?
-
希望有帮助...删掉其他字段,这样编辑就不会那么大...
-
谢谢你 - 我相信 @spencer7593 已经为这个问题提供了适当的答案 (+1)。
-
@pStan:很有趣。我从未尝试过将过程变量或参数名称包含在反引号中,就像您在上面显示的那样。 (我只在 SQL 语句(表名、列名)中使用反引号作为标识符。鉴于您能够编译过程,您也可以尝试将参数引用包含在反引号中。据推测,MySQL 赢了'不将其视为用户定义的变量,实际上可能将其视为对参数名称的引用。(我还没有测试过。)
标签: c# mysql sql-server