EB.*_*EB. 7 mysql testing stored-procedures insert mysql-workbench
我有一个Insert存储过程,我将其插入到2个表中.第二个表使用第一个表的Last_Insert_ID.这是我的特色:
DELIMITER $$
CREATE DEFINER=`root`@`%` PROCEDURE `new_user_create`(
IN oFarmName varchar(45),
IN oFirstName varchar(45),
IN oAddress1 varchar(45),
IN oCity varchar(45),
IN oState varchar(45),
IN oZip varchar(45),
IN oCountry varchar(45)
)
BEGIN
insert into intelliair.individual
( FarmName, FirstName)
values ( oFarmName, oFirstName);
insert into intelliair.address
(IndividualID, Address1, City, State, Zip, Country)
Values (Last_Insert_ID(), oAddress1, oCity, oState, oZip, oCountry);
END
Run Code Online (Sandbox Code Playgroud)
以下是我在MySql工作台中测试查询的方法:
call new_user_create(@myFarm, @MyName, @MyAddress, @MyCity, @MyState, @MyZip, @MyCountry)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:"列Address1不能为空"
我要去哪里?它在sproc中吗?还是我打电话的方式?
" 列地址1不能为空 "表示intelliair.address.Address1必须定义该字段not null.
并且,@MyAddress在将其传递给存储过程之前,我认为您没有预先定义的值.
除非定义它被视为NULL,因此抛出错误.
在调用存储过程之前交叉检查值,如:
select @MyAddress; -- ,@myFarm, @MyName, @MyCity, @MyState, @MyZip, @MyCountry;
Run Code Online (Sandbox Code Playgroud)
更新1:
您可以通过直接输入每个参数的值来调用存储过程.
示例:
call new_user_create(
'my Farm value', -- @myFarm
'E B', -- @MyName
'My Address is SO', -- @MyAddress1
'My City is Coders', -- @MyCity
'CA', -- @MyState
'12345', -- @MyZip
'US' -- @MyCountry
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49403 次 |
| 最近记录: |