Asp classic ASP经典及;SQL Server 2014十进制类型作为存储过程的参数
我正在使用一个旧的ASP经典网站,该网站最近从SQL Server 2005发展到2014年,我似乎无法将变量作为小数传递进来 我已经将我正在使用的内容分解为一个测试过程,该过程接受一个Asp classic ASP经典及;SQL Server 2014十进制类型作为存储过程的参数,asp-classic,odbc,decimal,sql-server-2014,Asp Classic,Odbc,Decimal,Sql Server 2014,我正在使用一个旧的ASP经典网站,该网站最近从SQL Server 2005发展到2014年,我似乎无法将变量作为小数传递进来 我已经将我正在使用的内容分解为一个测试过程,该过程接受一个十进制(4,2),并返回一个varchar转换(实际存储过程做更多工作) decimalV在本例中为14.5 Const AdNumeric=131 常量AdParamInput=&H0001 回答。写(“小数:&decimalV&“”) oCmd.Parameters.Append=oCmd.CreatePar
十进制(4,2)
,并返回一个varchar
转换(实际存储过程做更多工作)
decimalV
在本例中为14.5
Const AdNumeric=131
常量AdParamInput=&H0001
回答。写(“小数:&decimalV&“
”)
oCmd.Parameters.Append=oCmd.CreateParameter(“@test”,AdNumeric,adParamInput,,decimalV)
oCmd.参数(“@test”)。精度=2
oCmd.参数(“@test”)。数值刻度=4
oCmd.Parameters.Append=oCmd.CreateParameter(“@varcharBack”,AdVarChar,AdParamOutput,40)
我的理解是精度是小数位数,NumericScale
是位数
我得到输出:
decimalV: 14,5
任何反馈都将不胜感激。我无法更改连接字符串,因此最终通过向存储过程中传递一个double(在客户端验证之后),然后将浮点值转换为十进制(4,2)来解决此问题。嗯,我怀疑这更像是一个odbc问题,而不是sql server问题。这可能会让你有所收获。谢谢你换了贴上的标签。我将在odbc上使用google。如果您使用的是旧的提供程序,请切换到使用SQL Server本机客户端。虽然上面没有SQL Server 2014示例,但它应该与没有任何不同。只是“SQL Server 2014安装SQL Server 2012本机客户端。没有SQL Server 2014本机客户端”,所以我上面的链接应该会有所帮助。此外,在将数据类型从SQL Server映射到ADODB时,我一直使用这一非常有用的资源。如果指定的是
DECIMAL(4,2)
,则应使用adNumeric
作为CreateParameter()
方法中的数据类型。特别是当您切换到使用SQL Server本机客户端时。
Microsoft OLE DB Provider for ODBC Drivers error '80040e21'
Multiple-step OLE DB operation generated errors. Check each OLE DB status value,
if available. No work was done.