Sql server 索引超出了数组SQL server的界限
在SQL server上执行用户定义函数时,我收到以下消息: System.IndexOutOfRangeException:索引超出了数组的边界 我尝试了下面链接中给出的解决方案,但没有解决 SQL Server版本Sql server 索引超出了数组SQL server的界限,sql-server,Sql Server,在SQL server上执行用户定义函数时,我收到以下消息: System.IndexOutOfRangeException:索引超出了数组的边界 我尝试了下面链接中给出的解决方案,但没有解决 SQL Server版本 Microsoft SQL Server 2012 - 11.0.2218.0 (X64) Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 功能代码: create FUNCTION [dbo].[ToGregorianDa
Microsoft SQL Server 2012 - 11.0.2218.0 (X64)
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1
功能代码:
create FUNCTION [dbo].[ToGregorianDate](@pDate [nvarchar](4000))
RETURNS [datetime] WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [PersianSQLFunctions].[UserDefinedFunctions].[ToGregorianDate]
我在其中调用函数的查询是:
从StartDate不为null的ProjectOutput中选择dbo.ToGregorianDate(StartDate)
它们在ProjectOutput表中有86846条记录可能是您正在使用数组并在其中循环。循环执行的次数超过了现有记录数。例如,数组有4个元素。循环从0执行到4,而应该从0执行到3。也许你应该使用数组和循环(如果有的话)。请发布函数代码。看起来你试图通过高于数组长度的索引访问元素。如果长度为,则数组的长度为3,并且您正在尝试访问第4个元素。(arr[3])但您可以访问的最大值是arr[2],这是一个.NET错误,而不是SQL Server错误。因此,请找出引发此异常的.NET代码段,如果您无法通过检查或调试解决此问题,请将该代码放入您的问题中。如果Management Studio存在错误,则可能会产生此错误,在这种情况下,请尝试其他工具(如
cmd
)。另一种可能性是,您的函数是CLR函数,并且包含一个bug,在这种情况下,您需要找到它的源代码,或者在程序集上使用反汇编程序。SQL Server本身不是用.NET编写的,因此无法生成此错误。