为什么mysql调用存储过程总是错误_MYSQL中为什么调用这个存储过程老是报错啊解决方法...

博主在MySQL 5.5.21版本中遇到一个问题,创建了一个存储过程`spInscontractinfo`用于插入数据,但在调用时出现错误:`1054 - Unknown column 'SecurityTypeID' in 'field list'`。存储过程内部尝试从`contractvariety`表中获取`SecurityTypeID`和`VarietyID`,然后插入到`contractinfo`表中。经过读者反馈,可能的问题是`contractvariety`表缺少`SecurityTypeID`字段,建议分步调试以定位问题。
摘要由CSDN通过智能技术生成

mysql中为什么调用这个存储过程老是报错啊

我的MYSQL版本是5.5.21,写了个插入数据的存储过程,但是在调用的时候老报错,这个存储过程代码:

SQL code

CREATE PROCEDURE spInscontractinfo ( IN v_SymbolNum varchar(20), -- 合约号 IN v_ContractName varchar(24), -- 合约名称 IN v_ExchangeID int(11), -- 交易所ID IN v_MaxMarketOrderVolume int(11), -- 市价单最大下单量 IN v_MinMarketOrderVolume int(11), -- 市价单最小下单量 IN v_MaxLimitOrderVolume int(11), -- 限价单最大下单量 IN v_MinLimitOrderVolume int(11), -- 限价单最小下单量 IN v_StartDeliveryDate date, -- 开始交割日期 IN v_EndDeliveryDate date, -- 结束交割日期 IN v_OpenDate date, -- 上市日期 IN v_ExpireDate date, -- 过期日期 IN v_VolumeMultiple int(11), -- 合约数量乘数 IN v_PriceTick decimal(20,8), -- 最小变动价格 IN v_IsTrading tinyint(1), -- 当前是否交易 IN v_IsAvailable tinyint(1), -- 合约是否有效 IN v_Price decimal(20,8), -- 价格 IN v_PriceUnit varchar(20), -- 单位/价格 IN v_Unit varchar(20), -- 单位/手(每手最小单位) IN v_CurrencyID int(11), -- 货币单位ID IN v_CommissionFee decimal(20,8), -- 手续费 IN v_CommissionRate decimal(20,8), -- 手续费率 IN v_Margin decimal(20,8), -- 每手占用保证金 IN v_MarginRate decimal(20,8), -- 保证金率 IN v_AccountTypeID int(11), -- 账号类型ID IN v_HyPlace varchar(20) -- 地址 ) BEGIN DECLARE v_ContractID bigint(20); -- 合约ID DECLARE v_SecurityTypeID int(11); -- 证券类型ID DECLARE v_VarietyID int(11); -- 种类ID DECLARE v_CreateDate date; -- 创建日期 SELECT VarietyID,SecurityTypeID INTO v_VarietyID,v_SecurityTypeID FROM contractvariety WHERE ExchangeID=v_ExchangeID AND VarietyName=v_ContractName; SET v_ContractID=CONCAT(SecurityTypeID,(v_SymbolNum+0)); SET v_CreateDate=DATE_SUB(v_ExpireDate,INTERVAL 1 YEAR); INSERT INTO contractinfo VALUES( v_ContractID, v_SymbolNum, v_ContractName, v_SecurityTypeID, v_ExchangeID, v_VarietyID, v_MaxMarketOrderVolume, v_MMarketOrderVolume, v_MaxLimitOrderVolume, v_MLimitOrderVolume, v_StartDeliveryDate, v_EndDeliveryDate, v_CreateDate, v_OpenDate, v_ExpireDate, v_VolumeMultiple, v_PriceTick, v_IsTradg, v_IsAvailable, v_Price, v_PriceUnit, v_Unit, v_CurrencyID, v_CommissionFee, v_CommissionRate, v_Marg, v_MargRate, v_AccountTypeID, v_HyPlace ); END;

欢迎大家阅读《MYSQL中为什么调用这个存储过程老是报错啊解决方法》,跪求各位点评,by 搞代码

这个存储过程能正常创建,但是调用的时候就报错:

SQL code

CALL spInscontractinfo ( 'SB1303', -- v_SymbolNum varchar(20), -- 合约号 '白糖', -- v_ContractName varchar(24), -- 合约名称 2072007, -- v_ExchangeID int(11), -- 交易所ID 30, -- v_MaxMarketOrderVolume int(11), -- 市价单最大下单量 1, -- v_MinMarketOrderVolume int(11), -- 市价单最小下单量 200, -- v_MaxLimitOrderVolume int(11), -- 限价单最大下单量 1, -- v_MinLimitOrderVolume int(11), -- 限价单最小下单量 '2013-03-01', -- v_StartDeliveryDate date, -- 开始交割日期 '2013-03-17', -- v_EndDeliveryDate date, -- 结束交割日期 NULL, -- v_OpenDate date, -- 上市日期 '2013-03-17', -- v_ExpireDate date, -- 过期日期 112000, -- v_VolumeMultiple int(11), -- 合约数量乘数 0.01, -- v_PriceTick decimal(20,8), -- 最小变动价格 0, -- v_IsTrading tinyint(1), -- 当前是否交易 1, -- v_IsAvailable tinyint(1), -- 合约是否有效 26.88, -- v_Price decimal(20,8), -- 价格 '美分/磅', -- v_PriceUnit varchar(20), -- 单位/价格 112000, -- v_Unit varchar(20), -- 单位/手(每手最小单位) '150003', -- v_CurrencyID int(11), -- 货币单位ID 0, -- v_CommissionFee decimal(20,8), -- 手续费 0.0002, -- v_CommissionRate decimal(20,8), -- 手续费率 NULL, -- v_Margin decimal(20,8), -- 每手占用保证金 0.1, -- v_MarginRate decimal(20,8), -- 保证金率 105020004, -- v_AccountTypeID int(11), -- 账号类型ID '天志期货交易中心' -- v_HyPlace varchar(20) -- 地址 );

报错提示:

[Err] 1054 - Unknown column 'SecurityTypeID' in 'field list'

我这个SecurityTypeID在存储过程里已经赋值了啊。。郁闷啊,高手请解答。

------解决方案--------------------

contractvariety表是否 有SecurityTypeID字段,分步调试,看看哪个语句出问题

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值