0

我在 SQL Server 2008 R2 中有一个非常简单的函数,我使用TADStoredProcedure.

函数定义如下:

CREATE FUNCTION [dbo].[GetNextAvailableNo] 
(
    @APrefix nvarchar(10)
)
RETURNS int
AS
BEGIN
    DECLARE @Result int
    SELECT @Result = MAX([No])+1 FROM [Table1] WHERE [Prefix] = @APrefix
    RETURN @Result    
END

我面临一个奇怪的问题。第一次尝试调用此函数时,出现此错误:

异常类:EOleException
异常消息:第 1 行:无效的过程号 (0)。必须介于 1 和 32767 之间。

第一次是指 SQL 服务启动后的第一次。之后,一切正常。起初我认为这是我的 SQL Server 2008 R2 安装的问题,但我在每个可用的安装中都看到了这个问题。

有人知道吗?

4

1 回答 1

3

在选择语句中使用该函数。

喜欢

<TAdoQuery>.Sql.Add('SELECT dbo.GetNextAvailablePatNo('+QuotedStr('XX')+')');

为了优化服务器:

const
  cNextAvailablePatNoScript='SELECT dbo.GetNextAvailablePatNo(:Param)';

...
<TAdoQuery>.Sql.Text:= cNextAvailablePatNoScript;
<TAdoQuery>.Parameters.ParamByName('Param').Value:= 'XX';
<TAdoQuery>.Open; 
...
于 2012-11-14T10:37:41.207 回答