经典ASP无法执行存储过程

时间:2013-03-27 14:21:47

标签: sql-server asp-classic

我可以在SQL Management Studio中成功执行查询。 ASP代码抛出错误。

        Response.Write "<hr>" & sql & "<hr>"            
        conn3.Execute sql

ASP错误:

  

用于SQL Server的Microsoft OLE DB提供程序'80040e07'

     

将数据类型varchar转换为smalldatetime时出错。

SQL查询:

exec db.dbo.stored_proc1 @artID='6226', 
  @Odeme_Date='3-27-2013 15:47:24', @Odeme_Valor ='3-27-2013', 
  @OnceAnapara=0, @GecZamHemen= 1, @ODENEN_TUTAR = '263.69' , 
  @Odeme_Tip=3, @BankID=62, @MakbuzTanimID=45, @BilinmeyenID=NULL, 
  @CariAvansID=NULL, 
  @USERID=62, @MakbuzNO=NULL, @SelectedID='(817843)', 
  @Mesaj=NULL, @idleriGosterme=0, @CariCekID=NULL, 
  @CariSenetID=NULL

我可以复制&amp;粘贴查询然后成功执行。 ASP出了什么问题?

3 个答案:

答案 0 :(得分:2)

我使用了参数化查询,但它确实有效。

此链接有助于查找数据类型值:http://www.w3schools.com/ado/ado_datatypes.asp

PS:不要使用@Var_Date的查询字符串版本;即“MM-DD-YYYY”作为参数化输入。使用“YYYY-MM-DD”格式的参数。

答案 1 :(得分:1)

错误来自提供程序,因此确实看到数据类型不匹配。它可能在SQL Server Management Studio中运行,但在提供程序中仍然失败。我会再次查看日期文字并尝试日期格式的变化,看看你是否可以使用它。

如果提供程序根本不会传递varchar,那么您可能必须重新连接存储过程以接受varchar参数,并将它们转换为过程中的日期类型。

答案 2 :(得分:0)

我怀疑它与您的日期格式的服务器设置有关(来自您的参数名称,看起来您可能没有使用美国日期格式)。尝试检查目标数据库上的“dateformat”:

use db
go

DBCC USEROPTIONS

无论如何,您应该总是以“明确”格式之一格式化日期字符串:YYYYMMDD或YYYY-MM-DD。所以我会更改日期参数字符串值:

@Odeme_Date='2013-03-27 15:47:24', @Odeme_Valor ='2013-03-27'