如何给if中的参数传递的变量赋值?

时间:2019-06-13 09:24:32

标签: sql-server stored-procedures scope

我试图在满足条件的情况下为通过参数传递的变量赋值。

CREATE PROCEDURE MY_SP
@SomeDate DATE
AS
BEGIN

IF @SomeDate IS NOT NULL
 BEGIN
    UPDATE TABLE_A
    SET DATE1=@SomeDate
 END
ELSE
 BEGIN
    SET @SomeDate = GETDATE()
 END

print @SomeDate
-- code that is not actually a print

因此,我想在那之后使用@SomeDate,但是由于该值是在不同的范围内给出的,因此我不希望它如何工作。 如何在IF中返回给@SomeDate(ELSE部分)的值以供以后使用?

2 个答案:

答案 0 :(得分:0)

我认为您总是想进行更新,如果参数为GetDate(),请使用NULL

在这种情况下,您可以像下面的示例那样更简单。
如果不是这种情况,请更详细地说明您要做什么

CREATE PROCEDURE MY_SP @SomeDate DATE
AS
BEGIN
  set nocount on

  if @SomeDate is null
     SET @SomeDate = GETDATE()

  UPDATE TABLE_A
  SET DATE1=@SomeDate

  print @SomeDate
end

答案 1 :(得分:0)

CREATE PROCEDURE MY_SP @SomeDate DATE
AS
BEGIN
  set nocount on

  UPDATE TABLE_A
  SET DATE1=ISNULL(@SomeDate,GETDATE())

end