ALTER FUNCTION [dbo].[TrimStartString](@TrimStr varchar(1024), @TrimChar varchar(1024))RETURNS varchar(1024)AS  BEGIN declare @Len smallint
declare @Pos smallintset @Len = Len(@TrimChar)
set @Pos = 1while @Pos < Len(@TrimStr)
begin
  if SubString(@TrimStr, @Pos, @Len) = @TrimChar 
    set @Pos = @Pos + @Len
  else 
    break
endreturn SubString(@TrimStr, @Pos, Len(@TrimStr))END------------------------------------------------------------------------------------------
公司要把server2005转入oracle,所以函数和过程都要重新写,我是刚刚学oracle所以请大虾帮帮忙。下面是我写了一小段但是总是报错,还希望给与指教CREATE OR REPLACE FUNCTION TRIMSTARTSTRING
(
  TrimStr IN varchar2,TrimChar IN varchar2, TrimOuer out VARCHAR2
)
Return
VARCHAR2(是这样写返回类型吗)
AS
v_Len NUMBER;
v_Pos NUMBER;BEGIN
v_len := LENGTH(trimstr);
v_pos := 1;......END TRIMSTARTSTRING;

解决方案 »

  1.   

    -- TRY IT ..
    CREATE OR REPLACE FUNCTION TRIMSTARTSTRING(TRIMSTR  IN VARCHAR2,
                                               TRIMCHAR IN VARCHAR2)
      RETURN VARCHAR2 IS
      V_LEN NUMBER;
      V_POS NUMBER;BEGIN
      V_LEN := LENGTH(TRIMCHAR);
      V_POS := 1;
      
      WHILE V_POS < LENGTH(TRIMSTR) LOOP
        IF SUBSTR(TRIMSTR,V_POS,V_LEN) = TRIMCHAR THEN
          V_POS := V_POS + V_LEN;
        END IF;
      END LOOP;
      
      RETURN SUBSTR(TRIMSTR,V_POS,LENGTH(TRIMSTR));
    END TRIMSTARTSTRING;
      

  2.   


    --try it
    create or replace function TRIMSTARTSTRING(TrimStr IN varchar2,TrimChar IN varchar2) return
    varchar2 is
    trimouter  varchar2(1024);
    len number;
    pos number;
    begin
         len:=length(trimchar);
         pos:=1;
         while pos<length(trimstr) loop
         begin
              if substr(trimstr,pos,LEN )=trimchar then
              pos:=pos+len;
              end if;
              
         end;
         end loop;
         trimouter:=substr(trimstr,POS,length(trimstr));
         return(trimouter);
    end; 
      

  3.   

    try
    CREATE OR REPLACE FUNCTION TRIMSTARTSTRING(TrimStr  IN varchar2,
                                               TrimChar IN varchar2)
      RETURN varchar2 AS
      v_Len NUMBER;
      v_Pos NUMBER;
    BEGIN
      v_len := Length(TrimChar);
      v_Pos := 1;
      while v_Pos < Length(TrimStr) loop
        if SubStr(TrimStr, v_pos, v_len) = TrimChar then
          v_pos := v_pos + v_len;
        else
          exit;
        end if;
      end loop;
      return SubStr(TrimStr, v_Pos, Length(TrimStr));
    END;
      

  4.   

    create or replace function TRIMSTARTSTRING(TrimStr IN varchar2,TrimChar IN varchar2) return
    varchar2 is
    trimouter  varchar2(1024);
    len number;
    pos number;
    begin
         len:=length(trimchar);
         pos:=1;
         while pos<length(trimstr) loop
         begin
              if substr(trimstr,pos,LEN )=trimchar then
              pos:=pos+len;
              else exit;
              end if;
              
         end;
         end loop;
         trimouter:=substr(trimstr,POS,length(trimstr));
         return(trimouter);
    end;
      

  5.   

    SELECT REPLACE(TrimStr,TrimChar,'') into v v_trimstr from dual;