看看这mysql语句错在哪里啊
我想通过变量赋值,然后调用存储过程传递参数,但是老是报错:
- SQL code
DECLARE v_ContractID bigint(20); -- 合约IDDECLARE v_SymbolNum varchar(20); -- 合约号DECLARE v_ContractName varchar(24); -- 合约名称DECLARE v_SecurityTypeID int(11); -- 证券类型IDDECLARE v_ExchangeID int(11); -- 交易所IDDECLARE v_VarietyID int(11); -- 种类IDDECLARE v_MaxMarketOrderVolume int(11); -- 市价单最大下单量DECLARE v_MinMarketOrderVolume int(11); -- 市价单最小下单量DECLARE v_MaxLimitOrderVolume int(11); -- 限价单最大下单量DECLARE v_MinLimitOrderVolume int(11); -- 限价单最小下单量DECLARE v_StartDeliveryDate date; -- 开始交割日期DECLARE v_EndDeliveryDate date; -- 结束交割日期DECLARE v_CreateDate date; -- 创建日期DECLARE v_OpenDate date; -- 上市日期DECLARE v_ExpireDate date; -- 过期日期DECLARE v_VolumeMultiple int(11); -- 合约数量乘数DECLARE v_PriceTick decimal(20,8);-- 最小变动价格DECLARE v_IsTrading tinyint(1); -- 当前是否交易DECLARE v_IsAvailable tinyint(1); -- 合约是否有效DECLARE v_Price decimal(20,8); -- 价格DECLARE v_PriceUnit varchar(20); -- 单位/价格DECLARE v_Unit varchar(20); -- 单位/手(每手最小单位)DECLARE v_CurrencyID int(11); -- 货币单位IDDECLARE v_CommissionFee decimal(20,8); -- 手续费DECLARE v_CommissionRate decimal(20,8); -- 手续费率DECLARE v_Margin decimal(20,8); -- 每手占用保证金DECLARE v_MarginRate decimal(20,8); -- 保证金率DECLARE v_AccountTypeID int(11); -- 账号类型IDDECLARE v_HyPlace varchar(20); -- 地址DECLARE v_VarietyName VARCHAR(20);BEGINSET v_ExchangeID='10502004';SET v_VarietyName='白糖';SELECT VarietyID,SecurityTypeID INTO v_VarietyID,v_SecurityTypeID FROM contractvariety WHERE ExchangeID=v_ExchangeID,VarietyName=v_VarietyName;SET v_SymbolNum='SB1303'SELECT CONCAT(v_SecurityTypeID,'1303') INTO v_ContractID;SET v_ContractName=v_VarietyName;SET v_MaxMarketOrderVolume=30;SET v_MinMarketOrderVolume=1;SET v_MaxLimitOrderVolume=200;SET v_MinLimitOrderVolume=1;SET v_StartDeliveryDate='2013-03-01';SET v_EndDeliveryDate='2013-03-16';SET v_CreateDate=NOW();SET v_OpenDate='';SET v_ExpireDate='2013-03-17';SET v_VolumeMultiple='112000';SET v_PriceTick='0.01';SET v_IsTrading='0';SET v_IsAvailable='1';SET v_Price='26.88';SET v_PriceUnit='美分/磅';SET v_Unit=112000;SET v_CommissionFee='0';SET v_CommissionRate=0.0002;SET v_Margin='';SET v_MarginRate=0.1;SET v_AccountTypeID=105020004;SET v_HyPlace='天志期货交易中心';CALL spInscontractinfo(v_ContractID v_SymbolNum v_ContractName v_SecurityTypeID v_ExchangeID v_VarietyID v_MaxMarketOrderVolume v_MinMarketOrderVolume v_MaxLimitOrderVolume v_MinLimitOrderVolume v_StartDeliveryDate v_EndDeliveryDate v_CreateDate v_OpenDate v_ExpireDate v_VolumeMultiple v_PriceTick v_IsTrading v_IsAvailable v_Price v_PriceUnit v_Unit v_CurrencyID v_CommissionFee v_CommissionRate v_Margin v_MarginRate v_AccountTypeID v_HyPlace);END;
错误提示:
[SQL] DECLARE v_ContractIDbigint(20);
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DECLARE v_ContractIDbigint(20)' at line 1
到底错在哪里哦?高手请指点。
[解决办法]
MYSQL 不可以这样,
这些语句必须写在存储过程中,这和ORACLE,MS SQL SERVER不一样。不支持匿名块。