我有一个工作对数据库中几个表中的行执行多个验证检查。如果检查失败,它将在表中记录失败。记录的信息包括表名,失败行的唯一标识符值,检查失败的行,以及当时正在运行哪个作业。这里的日志TSQL函数从函数返回结果集中的行数
CREATE TABLE [tblSY_ValidationFieldFailures](
[pkValidationFieldFailure] [int] IDENTITY(1,1) NOT NULL,
[fkJobID] [int] NOT NULL,
[fkValidationFieldFailureType] [int] NOT NULL,
[TableName] nvarchar(128),
[TableUniqueIdentifier] [nvarchar](100) NULL)
我想编写一个返回给某个表和作业ID失败的行数的函数(即fnGetNumberOfFailedRows(@JobID,@tablename))的简化表定义。我尝试了类似于以下内容:
CREATE FUNCTION fnGetNumberOfRowsThatFailedValidationCheck
(
@pkJobID int,
@TableName nvarchar(128)
)
RETURNS int
AS
BEGIN
-- Declare the return variable here
DECLARE @NumFailedRows int
Select fkJobID,
TableUniqueIdentifier,
TableName
From tblSY_ValidationFieldFailures
Where [email protected] And [email protected]
Group By fkJobID, TableName, TableUniqueIdentifier
SET @NumFailedRows = @@ROWCOUNT
RETURN @NumFailedRows
END
但是,当然,您不能在函数内部具有该Select语句。有没有办法做到我想在一个函数内部做的事情,还是我必须这样做存储过程路线?
感谢这工作。我之前尝试过,没有别名,它有一个语法错误。你知道为什么最后需要a吗? – 2009-10-15 15:32:18
很高兴我能帮到你。我不能确切地说明为什么需要别名,除非说所有的字段必须能够被完全限定(大多数情况下,引擎会为你处理),并且没有派生名称表/结果集,您没有任何引用字段的来源的名称。只是猜测,但。 – 2009-10-15 21:05:38