2013-03-27 103 views
0

我可以在SQL Management Studio中成功執行查詢。 ASP代碼會引發錯誤。經典ASP無法執行存儲過程

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

ASP錯誤:

Microsoft OLE DB Provider for SQL Server hata '80040e07'

Error converting data type varchar to 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 

我可以複製粘貼&查詢並順利執行。 ASP有什麼問題?

+0

你的問題不是ASP,它是ADO。我不認爲你正在執行你認爲你的查詢。 ADO正在將所有事情都純粹地當作一條線來對待。你需要做的是創建一個ADODB.Command對象(對於SP本身)和ADODB.Parameter對象(對於傳遞給它的參數)。我的經典ASP/ADO真的很生疏;請參閱[本頁](http://clarksoncs.com/Samples/ADOParamQ.htm)瞭解初學者。 – alroc 2013-03-27 14:44:50

回答

0

我懷疑它與您的服務器設置有關的日期格式(從您的參數名稱,看起來像你可能不使用美國日期格式)有關。嘗試在目標數據庫中檢查你的「日期格式」:

use db 
go 

DBCC USEROPTIONS 

無論如何,你應該總是格式日期字符串中的「明確」的格式之一:YYYYMMDD或YYYY-MM-DD。所以我會更改日期參數字符串值:

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

我也是如此。但是同樣的查詢已在Management Studio中執行而沒有錯誤。 – 2013-03-27 14:49:34

+0

我同意這沒有多大意義。您是否嘗試將日期格式更改爲YYYY-MM-DD? Connection.Execute和SQL Server之間會發生很多事情,從SSMS執行時可能不會發生。 – 2013-03-27 14:55:35

+0

在參數化版本中,我使用了YYYY-MM-DD版本。 – 2013-04-02 10:56:27

1

錯誤來自提供程序,所以它確實看到數據類型不匹配。它可能在SQL Server Management Studio中運行,但仍然在提供程序中失敗。我會再次查看日期文字,並嘗試日期格式的變體,並查看是否可以使其工作。

如果提供程序根本不傳遞varchar,那麼您可能必須重新連線存儲過程才能接受varchar參數,並將它們轉換爲過程中的日期類型。

2

我使用參數化查詢,它的工作。

此鏈接幫着找數據類型值:http://www.w3schools.com/ado/ado_datatypes.asp

PS:不要使用@Var_Date的查詢字符串版本;即「MM-DD-YYYY」作爲參數輸入。使用「YYYY-MM-DD」格式的參數。

+0

如果它解決了您的問題,請將其標記爲已接受。 – 2013-04-02 07:02:52