从python调用标量函数

问题描述

我看到了很多有关如何调用存储过程以返回使用fetchval()函数从Python插入到sql表的记录的键的信息。

但是,我想调用一个sql UDF。

sql

ALTER FUNCTION udf_get_gleif_last_entity_lei
(

)
RETURNS nvarchar(500)
AS
BEGIN
    DECLARE @last_lei nvarchar(500)

    SELECT @last_lei = LEI FROM dbo.gleif_level1_entities WHERE id=(SELECT max(id) FROM dbo.gleif_level1_entities);

    RETURN @last_lei
END

我可以通过在查询窗口中调用它来确认它是否有效:

declare @result nvarchar(500)
exec @result = dbo.udf_get_gleif_last_entity_lei
print(@result)

现在我想通过python调用它。我认为它的工作方式与调用存储过程相同:

[conn,cursor] = init_connection(server_name,db_name)
sql_str = "exec dbo.udf_get_gleif_last_entity_lei"
return_value = cursor.execute(sql_str).fetchval()
print("return_value = ",return_value)

不幸的是,这不起作用。 cursor.execute()命令出错。

pyodbc.ProgrammingError:无结果。以前的sql不是查询

这使我认为必须以不同的方式执行UDF。或者,也许我将其更改为常规存储过程。我可以做的。无论如何:pyodbc可以调用UDF吗?如果可以,怎么办?

附录:是的。当我将UDF更改为存储过程时,这绝对可行。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)