• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

看看这mysql语句错在哪里啊该如何处理

mysql 搞代码 7年前 (2018-06-02) 164次浏览 已收录 0个评论

看看这mysql语句错在哪里啊
我想通过变量赋值,然后调用存储过程传递参数,但是老是报错:

SQL code

  DECLARE v_ContractID    bigint(20); -- 合约ID DECLARE v_SymbolNum    varchar(20); -- 合约号 DECLARE v_ContractName    varchar(24); -- 合约名称 DECLARE v_SecurityTypeID    int(11); -- 证券类型ID DECLARE v_ExchangeID    int(11); -- 交易所ID DECLARE v_VarietyID    int(11); -- 种类ID DECLARE 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); -- 货币单位ID DECLARE 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); -- 账号类型ID DECLARE v_HyPlace    varchar(20); -- 地址 DECLARE v_VarietyName VARCHAR(20); BEGIN SET 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;   

欢迎大家阅读《看看这mysql语句错在哪里啊该如何处理》,跪求各位点评,by 搞代码

错误提示:
[SQL] DECLARE v_ContractID bigint(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_ContractID bigint(20)’ at line 1

到底错在哪里哦?高手请指点。

——解决方案——————–
MYSQL 不可以这样,
这些语句必须写在存储过程中,这和ORACLE,MS SQL SERVER不一样。不支持匿名块。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:看看这mysql语句错在哪里啊该如何处理
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址