2011-09-23 41 views
0

我从另一个存储过程调用存储过程。该存储过程总是返回一个整数值,所以我接受一个整数变量的值。从存储过程返回的整数中分配值+ Sybase

EXEC @IsBusinessDay = LiteIsWorkingDay @ExecutionStart 

但是,即使存储过程返回@IsBusinessDay 1个值为0

代码块

SELECT @ExecutionStart = CONVERT(VARCHAR, GETDATE(), 107) 

EXEC @IsBusinessDay = LiteIsWorkingDay @ExecutionStart 

IF(@IsBusinessDay = 0) 
BEGIN 
    IF(CONVERT(VARCHAR,@InterMediateStartDate,108) > CONVERT(VARCHAR,GETDATE(),108)) 
    BEGIN 
     INSERT INTO TbJobQueue (JobId, ScheduleId, DueDate, Status, ExpiryDate, 
           ProcessingDate, InputUser, InputTime, 
           LastModifiedBy, LastModifiedTime) 
     VALUES (@JobId, @ScheduleId, @InterMediateStartDate, 'NQUE', NULL, 
       NULL, 'Scheduler', GETDATE(), NULL, NULL) 
    END 
END 

请帮助。

感谢

+0

您可以提供更多信息。 什么是你的存储过程,... 没有更多的信息,我们不能帮你 – Sven

+0

我插入记录与一个存储过程。现在检查今天是营业日还是不行,我将今天的日期值分配给@ExecutionStart并调用过程LiteIsWorkingDay。 – Denish

+0

此程序将在HolidayMaster中检查该日是否为工作日。如果工作日那么它返回0否则它返回1.所以我期望从该存储过程中0和1的值。这是给予适当的结果。如果被称为孤立的话,上面给出的甚至是给出正确的结果但是当StoreBroker中的值为IsBusinessDay时,返回值保持0不变。 – Denish

回答

1

如果你想在存储过程中,你必须做出这样的一个变量的值:

  1. 声明输出参数在LiteIsWorkingDay存储过程

    创建过程LiteIsWorkingDay @ExecutionStart VARCHAR(20),@IsBusinessDay INT输出

  2. 在LiteIsWorkingDay存储过程中,您必须为@IsBusinessDay输出参数选择一个值。

  3. 在调用LiteIsWorkingDay你需要做这样的事情来获得它的值存储过程:

    声明@ExecutionStart VARCHAR(20) 选择@ExecutionStart =转换(VARCHAR,GETDATE(),107)

    声明@IsBusinessDay诠释 EXEC LiteIsWorkingDay,@IsBusinessDay输出

而这一切。现在变量@IsBusinessDay将具有您想要的值: