繁体   English   中英

无法在Rails控制台(activerecord-sqlserver-adapter)中执行存储过程

[英]Can't execute store procedure in rails console (activerecord-sqlserver-adapter)

我正在使用Rails控制台尝试执行以下存储过程:

exec dbo.MP_RPT_Q_VENTAS_TOP_PRODUCTOS @COD_CTE='',@COD_DOC='T',@FECHA1='2015-01-01',@FECHA2='2015-23-06',@COD_GRUPO='',@COD_ZONA='',@PORCENTAJE=30,@DESCRI='',@MIN='X',@CONTADO='',@COD_AGRICOLA='',@COD_GRUPO_PROD_INTERES='',@UTILIDAD_MAXIMA='101',@CATEGORIA='',@FILTRAR_VALOR='C',@CODIGO_INGREDIENTE_ACTIVO='',@CODIGOS_PRODUCTOS='',@CLASIFICACION='T',@ORDEN='$UTILIDAD',@FORMATO_ASP='0',@CLASIFICACION2='T',@CLASIFICACION3='T',@TIPO_CLIENTE='TODOS',@COD_LOTE=''

为此,我正在运行以下命令,请注意,我对参数进行了分割,只保留了值:

Almacen.execute_procedure("MP_RPT_Q_VENTAS_TOP_PRODUCTOS", '','T','2015-01-01','2015-23-06','','',30,'','X','','','','101','','C','','','T','$UTILIDAD','0','T','T','TODOS','')

当我尝试运行该行时,出现以下错误:

TinyTds::Error: The conversion of a varchar data type to a smalldatetime data ty
pe resulted in an out-of-range value.: EXEC MP_RPT_Q_VENTAS_TOP_PRODUCTOS '', 'T
', '2015-01-01', '2015-23-06', '', '', 30, '', 'X', '', '', '', '101', '', 'C',
'', '', 'T', '$UTILIDAD', '0', 'T', 'T', 'TODOS', ''
ActiveRecord::StatementInvalid: TinyTds::Error: The conversion of a varchar data
 type to a smalldatetime data type resulted in an out-of-range value.: EXEC MP_R
PT_Q_VENTAS_TOP_PRODUCTOS '', 'T', '2015-01-01', '2015-23-06', '', '', 30, '', '
X', '', '', '', '101', '', 'C', '', '', 'T', '$UTILIDAD', '0', 'T', 'T', 'TODOS'
, ''
        from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/activerecord-sqlserver-adapt
er-4.0.0/lib/active_record/connection_adapters/sqlserver/database_statements.rb:
96:in `each'
        from C:/Ruby21-x64/lib/ruby/gems/2.1.0/gems/activerecord-sqlserver-adapt
er-4.0.0/lib/active_record/connection_adapters/sqlserver/database_statements.rb:
96:in `block in execute_procedure'

...

我尝试通过在日期之间去除引号来更改这些日期来进行更改,然后执行存储,但没有结果,这是不正确的。

有任何想法吗?

错误:将varchar数据类型转换为smalldatetime数据类型导致值超出范围

此类错误表示您以DB期望的不同格式传递日期。 例如:格式为YEAR-MONTH-DAY时,将字符串'2015-23-06'转换为SMALLDATETIME失败。 没有月份23。

可能的解决方案:

  • 以正确的日期格式'2015-06-23'提供参数
  • 更改dateformat SET DATEFORMAT ydm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM