2017-09-19 34 views
-2

我需要执行一个需要COALESCE的存储过程,如果字段值为null,则使用另一个字段值。EXEC sproc COALESCE(value1,value2)

EXEC dbo.TestSproc COALESCE ('Field1','Field2') 

任何人都可以建议如何最好地编码?

这将在SQL作业中调用,因此需要成为一行。

+0

你是什么意思? – Jodrell

+0

@Jodrell我不知道我怎么能为你分解得更多。我需要在Job'EXEC dbo.TestSproc COALESCE('EndDate','StartDate')'中调用SPROC如果EndDate为null,则需要使用StartDate,我的SPROC将在EndDate的10天内查看任何活动。我无法编辑存储过程,因为它在其他区域中使用。 – shawkins1

+1

你已经*失败*将你的问题放在你目前的代码*产生一个错误*。一旦你提到过,通常也包括实际的错误信息*。 (但是,在这种情况下,我知道问题是什么 - 'EXEC'可以接受参数的* literal值*或* variables *,它不接受任意*表达式*) –

回答

0

CASE语句时,那场我们NULL

CASE WHEN field IS NULL 
    THEN COALESCE ('Field1','Field2') 
    ELSE 0 END 
+0

你可以扩展吗,我需要这个作为一个SQL作业的exec语句 – shawkins1

+0

你目前的代码是什么? –

0

或者:

declare @field1 bigint = (select Field1 from table1); 
declare @field2 bigint = (select Field2 from table2); 
declare @isnull bigint = isnull(@field1, @field2); 

exec dbo.TestSproc @isnull 
+0

谢谢,尽管我需要这个作为SQL Job – shawkins1

+0

@ shawkins1的单行,嗯,在问题中写下它。 – Jodrell

+0

@ shawkins1如果你需要,你可以把它放在一行上。 –

相关问题