dbo.OlahFindViewType2

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

Parameters

Name Data Type Length Description
@PATH varchar 10
@FIELD_TABLE varchar 250
@TYPE int 4
@BYPASS_LIKE bit 1
@x_cr bit 1
@x_lr bit 1
@x_ll bit 1
@x_ft varchar 255
@x_ft2 varchar 255
@x_cn int 4
@RESULT1 varchar 1000
@RESULT2 varchar 1000

SQL Script

SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
CREATE procedure dbo.OlahFindViewType2
@PATH varchar(10),
@FIELD_TABLE varchar(250) ,
@TYPE int , --1= STRING ,2=ANGKA , 3=DATETIME
@BYPASS_LIKE bit,
@x_cr bit,
@x_lr bit,
@x_ll bit,
@x_ft varchar(255),
@x_ft2 varchar(255) ,
@x_cn int,
@RESULT1 varchar(1000) output,
@RESULT2 varchar(1000) output 
WITH 
---XencX---encryption ,
EXECUTE AS CALLER
AS
BEGIN
set nocount on
 set @RESULT1=''
 set @RESULT2=''

DECLARE @SQLString nvarchar(MAX);
DECLARE @ParmDefinition nvarchar(MAX);
if @x_cr =1
begin
 if @TYPE=3 --DATE
 begin
 --CN //1:equal , 2:< , 3:> , 4:between
   declare @date_star datetime
   declare @date_end datetime
 
   if (CHARINDEX('/', @x_ft)=5)
   begin
    set @date_star = convert(datetime,left(@x_ft,10), 111)
   end
   else if (CHARINDEX('/', @x_ft)=3)
   begin
    set @date_star = convert(datetime,left(@x_ft,10), 103)
   end
   else if (CHARINDEX('-', @x_ft)=5)
   begin
    set @date_star = convert(datetime,replace(left(@x_ft,10),'-',''), 112)
   end
   else if (CHARINDEX('-', @x_ft)=3)
   begin
    set @date_star = convert(datetime,replace(left(@x_ft,10),'-','/'), 103)
   end
   else 
   begin
    --print @x_ft
  set @date_star = convert(datetime,replace(replace(left(@x_ft,10),'-',''),'/',''), 121)
   end
 
  if (@x_cn=4)
  begin
   if (CHARINDEX('/', @x_ft2)=5)
   begin
    set @date_end = convert(datetime,left(@x_ft2,10), 111)
   end
   else if (CHARINDEX('/', @x_ft2)=3)
   begin
    set @date_end = convert(datetime,left(@x_ft2,10), 103)
   end
   else if (CHARINDEX('-', @x_ft2)=5)
   begin
    set @date_end = convert(datetime,replace(left(@x_ft2,10),'-',''), 112)
   end
   else if (CHARINDEX('-', @x_ft2)=3)
   begin
    set @date_end = convert(datetime,replace(left(@x_ft2,10),'-','/'), 103)
   end
   else 
   begin
    set @date_end = convert(datetime,replace(replace(left(@x_ft2,10),'-',''),'/',''), 112)
   end
   set @RESULT1= ' (cast( ' + @FIELD_TABLE + ' as date) between convert(date, ''' + convert(varchar(10),@date_star,112) + ''',112) and convert(date, ''' +  convert(varchar(10),@date_end,112) + ''',112)) and ' ;
   set @RESULT2= 'between ' + convert(varchar(255), @date_star ,103) + ' until ' + convert(varchar(255),@date_end,103);
  end
  else
  begin
     if (@x_cn=1)
    begin
    set @RESULT1=  ' (cast(' + @FIELD_TABLE + ' as date) = convert(date, ''' + convert(varchar(10),@date_star,112) + ''',112)) and ' ;
    set @RESULT2= '= ' + convert(varchar(255),@date_star,103) ;
    end
     else if (@x_cn=2)
    begin
    set @RESULT1=  ' (cast(' + @FIELD_TABLE + ' as date) < convert(date, ''' + convert(varchar(10),@date_star,112) + ''',112)) and ' ;
    set @RESULT2= '< ' + convert(varchar(255),@date_star,103);
    end
     else if (@x_cn=3)
    begin
    set @RESULT1=  ' (cast(' + @FIELD_TABLE + ' as date) > convert(date, ''' + convert(varchar(10),@date_star,112) + ''',112)) and ' ;
    set @RESULT2= '> ' + convert(varchar(255),@date_star,103);
    end
  end
 end
 else if @TYPE=2 --ANGKA
 begin
 --CN //1:equal , 2:< , 3:> , 4:between
  set @x_ft=ltrim(rtrim(@x_ft)) 
   set @x_ft2=ltrim(rtrim(@x_ft2)) 

  if (@x_cn=4)
  begin
   set @RESULT1= ' ( ' + @FIELD_TABLE + ' between ' + @x_ft + ' and ' + @x_ft2 + ' ) and ' ;
   set @RESULT2= 'between ' +   @x_ft    + ' until '  +    @x_ft2    ;
  end
  else
  begin
     declare @xmodecari varchar(255)
     set @xmodecari=''
 
    if   ISNUMERIC (@x_ft) !=0
    begin
      if (CHARINDEX('>=', @x_ft)>0)
      set @xmodecari='>='
      else if (CHARINDEX('<=', @x_ft)>0)
      set @xmodecari='<='
      else if (CHARINDEX('>', @x_ft)>0)
       set @xmodecari='>'
      else if (CHARINDEX('<', @x_ft)>0)
       set @xmodecari='<'
      else if (CHARINDEX('=', @x_ft)>0)
       set @xmodecari='='
       else 
       set @xmodecari=''
        end  
 
     if (@x_cn=1)
    begin
    if @xmodecari=''
    set @xmodecari=' = ';

    set @RESULT1=  ' (' + @FIELD_TABLE + @xmodecari + @x_ft + ') and ' ;
    set @RESULT2= '= ' +    @x_ft   ;
    end
     else if (@x_cn=2)
    begin
    if @xmodecari=''
    set @xmodecari=' < ';

    set @RESULT1=  ' (' + @FIELD_TABLE + @xmodecari + @x_ft + ') and ' ;
    set @RESULT2= '< ' +   @x_ft   ;
    end
     else if (@x_cn=3)
    begin

    if @xmodecari=''
    set @xmodecari=' > ';

    set @RESULT1=  ' (' + @FIELD_TABLE + @xmodecari + @x_ft + ') and ' ;
    set @RESULT2= '> ' +    @x_ft     ;
    end
  end
 end
 else if @TYPE=1 --TEXT
 begin 
    if @BYPASS_LIKE=0 
   begin

   set @x_ft= replace(@x_ft ,'[', '[[]')
   set @x_ft= replace(@x_ft ,'%','[%]')
   set @x_ft= replace(@x_ft ,'_','[_]')
   set @x_ft= replace(@x_ft ,'*','%')
    

     if (@x_lr=1) set @x_ft= @x_ft + '%' ;
    if (@x_ll=1) set @x_ft= '%' +  @x_ft ;
    if ((@x_lr=1) or (@x_lr=1) ) 
        set @x_ft= ' like ''' + @x_ft + '''';
     else
     set @x_ft= ' = ''' + @x_ft + '''';
     end
   else
   begin
      
       set @x_ft= ' = ''' + @x_ft + '''';
    end

   if @x_ft =''
   set @RESULT2= '';
   else
   set @RESULT2= ltrim(rtrim(@x_ft));
   
    set @RESULT1=' (' + @FIELD_TABLE + ' ' + @x_ft + ') and ';
  
 END  
end
else
begin
 set @RESULT2= '';
 set @RESULT1='';
 
end
set nocount off
     RETURN( 1)
END;


GO

Depends On

No items found