CREATE OR REPLACE Function ZL_GetSinglebyte_string
		
		
			(
		
		
			  strValue_IN varchar2,
		
		
			  numValue_IN number
		
		
			)
		
		
			Return Varchar2 Is
		
		
			   v_temp varchar2(200);
		
		
			   v_return varchar2(200);
		
		
			   v_num number:=0;
		
		
			   v_sum number:=0;
		
		
			   idx number :=1 ;
		
		
			   idy number :=0 ;
		
		
			BEGIN
		
		
			  IF lengthb(strValue_IN)>=numValue_IN then
		
		
			      WHILE idx <= LENGTH(strValue_IN) LOOP
		
		
			         v_temp := SUBSTR(strValue_IN,idx,1);
		
		
			         v_num := v_num + lengthb(v_temp);
		
		
			         if v_num > numValue_IN then
		
		
			            v_return := v_return||substr(strValue_IN,1,idx-1)||'  ';
		
		
			            exit;
		
		
			         elsif v_num = numValue_IN then
		
		
			            v_return := v_return||substr(strValue_IN,1,idx);
		
		
			            exit;
		
		
			         else
		
		
			            idx := idx + 1 ; 
		
		
			         END IF;
		
		
			      END LOOP;
		
		
			   ELSE
		
		
			     v_sum := numValue_IN - LENGTHB(strValue_IN);
		
		
			     v_return := v_return||strValue_IN;
		
		
			     WHILE idy < v_sum LOOP
		
		
			        v_return := v_return||'  ';
		
		
			        idy := idy + 1;
		
		
			     END LOOP;
		
		
			   END IF; 
		
		
			   IF mod(lengthb(strValue_IN),2) = 0 then
		
		
			      v_return := v_return || ' |';
		
		
			   ELSE
		
		
			      v_return := v_return || '|';
		
		
			   END IF;
		
		
			   Return v_return;
		
		
			Exception
		
		
			  When Others Then
		
		
			    Zl_Errorcenter(Sqlcode, Sqlerrm);
		
		
			END ZL_GetSinglebyte_string;
		
		
			
		
		
			
		
		
			建同义词:
		
		
			create or replace public synonym ZL_GetSinglebyte_string
		
		
			for HIS.ZL_GetSinglebyte_string;
		
		
			----------------------------------------------------------
		
		
			GRANT EXECUTE ON ZL_GetSinglebyte_string to public