如何解决从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 举报,一经查实,本站将立刻删除。