使用舊式經典ADO,而不是 ADO.NET,如何將日期值傳遞給JavaScript中的存儲過程? JS運行在IIS7上的經典ASP頁面中。 SQL Server是2012(1)。傳遞日期到JavaScript的ADODB.Command參數
已解答:請參閱下面的答案。長話短說,結果是通過JSON字符串找到他們的方式,忽略具有不同日期值的屬性。
我在SQL Server中的存儲過程:
create procedure test(@n int, @d datetime)
as
begin
select @n n, @d d;
end;
而且我有一個傳統的ASP頁面的一些JavaScript代碼:
var conn = new ActiveXObject("ADODB.Connection");
var cmd = new ActiveXObject("ADODB.Command");
conn.Open(connectionString);
cmd.ActiveConnection = conn;
cmd.CommandType = adCmdStoredProc;
cmd.CommandText = 'dbo.test';
cmd.Parameters.Append(cmd.CreateParameter('@n', adInteger, adParamInput, 4, 123));
var param = cmd.CreateParameter('@d', adDate, adParamInput);
param.Value = (new Date('01/01/2000')).getVarDate();
cmd.Parameters.Append(param);
var rs = cmd.Execute();
我回來從SP總是有預期值爲@n
(123,以上),並始終有null
爲@d
。 connectionString
必須確定,因爲它確實叫SP,而且它絕對是我認爲我打電話給的SP;如果我對它進行修改,它們會反映回來的內容。
我從Eric Lippert's answer here得到getVarDate()
。我也嘗試過使用各種數據類型的adDBDate
。
我爲測試目的寫了上述測試SP;你可能已經注意到它並沒有做太多有用的工作。在生產中,我必須將日期傳遞給現有的SP。該SP的細節並不能說明這個問題。我可以,如果我絕對必須,寫一個包裝SP,接收日期作爲一個字符串,並將其轉換。但是我想知道這裏出了什麼問題,而且我們已經有足夠多的半冗餘SP將數據庫弄亂了。而這只是一個可怕的做事方式。 (1)@@ version ='Microsoft Windows Server 2012(SP1) - 11.0.3381.0(X64)2013年8月23日20:08:13 Copyright(c)Windows NT上的Microsoft Corporation Enterprise Edition(64位) 6.0(Build 6002:Service Pack 2)(管理程序)'
是'ad.ParamInput'一個錯字? –
@ Kul-Tigin是的,謝謝。糾正。 –
它適合我。如果糾正錯字後問題仍然存在,您可能需要分享連接字符串。一些司機/供應商可能會導致類似的問題。 –