从案例结果写入数据库

时间:2016-01-02 10:23:37

标签: sql-server-2008 tsql stored-procedures

我想根据案例的结果更新数据库,但是我的" If"声明似乎没有从正确的表中提取信息。

declare @dt datetime 
set @dt = GETDATE()
select
Ugenummer = datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1,
case when (datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1) % 2 = 1
     then 'ulige' else 'lige' end Ugelighed; 

以上代码获取周数(ugenummer)并确定它是奇数还是偶数(Ulige / lige)

 IF Ugelighed = ulige and datepart(dw,@dt) = 1
THEN 
    UPDATE laeger
    SET Antal=1
    WHERE Navn=Lægenavn

我想使用第一个代码中的信息来更新SQL 2008服务器中的数据库

1 个答案:

答案 0 :(得分:0)

你没有使用Ugenummer所以我编辑了它。还为Ugelighed创建了一个变量,你忘了创建一个:

declare @dt datetime 
set @dt = GETDATE()
declare @Ugelighed VARCHAR(5);
select
@Ugelighed=case when (datepart(wk, @dt) - datepart(wk,dateadd(m, DATEDIFF(M, 0, @dt), 0)) + 1) % 2 = 1
     then 'ulige' else 'lige' end;

在以下语句中,我使用变量@Ugelighedulige进行比较,但它是VARCHAR,因此您需要将其括在单引号('')中。与Lægenavn相同,它是VARCHAR,因此请将其用单引号括起来:

IF @Ugelighed = 'ulige' and datepart(dw,@dt) = 1
    UPDATE laeger
    SET Antal=1
    WHERE Navn='Lægenavn'

就我个人而言,我会为BIT创建一个@Ugelighed字段,因为偶数/奇数可以被捕获为一个简单的布尔值而不是文本。