修复将数据类型 varchar 转换为数字时出错的问题.(8114) (SQLExecDirectW)')



我正在尝试使用 pyodbc 运行以下存储过程。

USE [CompanyMC]
GO
/****** Object:  StoredProcedure [dbo].[marketprice]    Script Date: 15/10/2019 23:02:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[marketprice](@marketvalue AS VARCHAR(30))
AS
BEGIN
SELECT TRY_CAST (CompanyMarketCap AS numeric) from CompanyMC.dbo.Companies
where CompanyName= @marketvalue
END

这是我的蟒蛇代码

# Call the procedure and pass rhe arguments as a list
sql=f"""
EXEC {proc_name} @marketvalue=?;
"""
parameters = (company_name)
cursor.execute(sql, parameters)
# get the result set and iterate over it to get the returned value
result = cursor.fetchval()

我一直遇到错误。

("42000", "[42000] [Microsoft][ODBC 驱动程序 17 for SQL Server][SQL Server]将数据类型 varchar 转换为数字时出错。(8114( (SQLExecDirectW('(

似乎无法弄清楚我做错了什么,任何提示将不胜感激。

确保在varchar 中存储了一个合法的数字字符串(例如,不是"xyz",也不是NULL(。 然后尝试转换((:

SELECT CONVERT(numeric, CompanyMarketCap) FROM CompanyMC.dbo.Companies WHERE CompanyName= @marketvalue

如果 NULLS 是可能的,那么在你的语句中添加一个 COALSCE((。

最新更新