SQL - 调用汇编的函数,如何更新参数?

问题描述 投票:0回答:1

我有以下 SQL 代码。这是通过传递几何对象来调用的,如 dbo.MakeValidGeographyFromGeometry(geom):

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[MakeValidGeographyFromGeometry](@inputGeometry [geometry])
RETURNS [geography] WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [SQLSpatialTools].[SQLSpatialTools.Functions].[MakeValidGeographyFromGeometry]

我们经常出现几何错误,导致此函数出现问题。因此,我想在 @inputGeometry 参数通过时更新它。我知道更新几何图形的代码,但不知道如何在这里实现它。

在这样的函数中,我们如何更新传递的参数?

sql sql-server spatial-query
1个回答
1
投票

由于无法将 TSQL 和汇编调用结合在一个函数中,因此我建议创建一个调用汇编函数的包装函数。包装函数应具有原始名称,以避免中断和代码重写。

基本步骤是:

  1. 创建一个名为
    MakeValidGeographyFromGeometryInternal
    的新汇编函数,它是当前汇编函数的副本。请务必记下现有权限,以便您可以正确转移它们
  2. 删除当前的装配函数。这是需要的,因为通常 sql server 不允许通过 ALTER 更改函数“类型”。
  3. 创建一个名为
    MakeValidGeographyFromGeometry
    的包装函数,它执行您需要的任何处理,然后调用
    MakeValidGeographyFromGeometryInternal
    。请务必注意所需的权限(如果有)。

这应该允许您保持调用代码不变

© www.soinside.com 2019 - 2024. All rights reserved.