2012-07-05 36 views
0

“与CAST(FLAGS AS BIGINT)& 1 = 1”如何为Oracle sp编写此代码,我们还必须允许应用程序处理Oracle用户。如何在Oracle中使用投影sp

ALTER PROCEDURE [OGEN].[DBD_GET_STOCK_SUMMARY] 
@FACILITY_KEY VARCHAR(1000), 
@START_DATE DATETIME, 
@END_DATE DATETIME 
AS 
BEGIN 
    SELECT COUNT(*) COUNT, OGEN.DATEONLY(CREATED_ON) [DATE] 
    FROM OGEN.NDC_M_FORMULARY 


    WHERE OGEN.DATEONLY(CREATED_ON) BETWEEN OGEN.DATEONLY(@START_DATE) AND OGEN.DATEONLY(@END_DATE) 
    AND FACILITY_KEY IN (SELECT VALUE FROM OGEN.COMMA_TO_TABLE(@FACILITY_KEY)) 
    **AND CAST(FLAGS AS BIGINT) & 1 = 1** 
    GROUP BY OGEN.DATEONLY(CREATED_ON) 
END 


GO 
+0

我想你想的BITAND功能。 。 。 http://docs.oracle.com/cd/B28359_01/server.111/b28286/functions014.htm。 – 2012-07-05 19:34:54

回答

0

相反的BIGINT,您可以使用NUMBERBINARY_INTEGER在甲骨文在下列方式...

CAST (FLAGS AS NUMBER(19)) 
0
select count(*) count, trunc(CREATED_ON) "DATE" 
    from NDC_M_FORMULARY 
where trunc(CREATED_ON) BETWEEN trunc(:startDate) AND trunc(:endDate) 
    and FACILITY_KEY IN (select cast (regexp_substr(:facilityKey,'[^,]+', 1, level) as number) 
          from dual 
         connect by regexp_substr(:facilityKey, '[^,]+', 1, level) is not null) 
    and bitand(cast (flags as int), 1) = 1 
group by trunc(CREATED_ON)