Allora ci stò arrivando, ho eliminato l'idea di una tabella temporanea e scrivo direttamente su tabella_2...

Ho creato una function split

codice:
CREATE FUNCTION [dbo].[Split]
(
    @sString nvarchar(2048),
    @cDelimiter nchar(1)
)
RETURNS @tParts TABLE ( part nvarchar(2048) )
AS
BEGIN
    if @sString is null return
    declare	@iStart int,
    		@iPos int
    if substring( @sString, 1, 1 ) = @cDelimiter 
    begin
    	set	@iStart = 2
    	insert into @tParts
    	values( null )
    end
    else 
    	set	@iStart = 1
    while 1=1
    begin
    	set	@iPos = charindex( @cDelimiter, @sString, @iStart )
    	if @iPos = 0
    		set	@iPos = len( @sString )+1
    	if @iPos - @iStart > 0			
    		insert into @tParts
    		values	( substring( @sString, @iStart, @iPos-@iStart ))
    	else
    		insert into @tParts
    		values( null )
    	set	@iStart = @iPos+1
    	if @iStart > len( @sString ) 
    		break
    end
    RETURN


END
Ora con un cursore in una stored procedure inserisco i dati splittati in una colonna

codice:
USE [ddati]
GO


SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE [dbo].[typedef]
  ( @Params varchar(300), 
    @Delimiter varchar(1))
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;


   declare 
      @type  varchar(5),
      @upd_sql  varchar(255)
	


   declare CUR Cursor for
    select *  from [dbo].[Split](@Params,@Delimiter)


  set @upd_sql = 


  
   




	OPEN CUR 
	Fetch Next From CUR Into @type
    While @@Fetch_Status = 0 Begin




		Fetch Next From CUR Into @type
	End -- End of Fetch




    -- Insert statements for procedure here
END
ora provando a mano mi da questo risultato

codice:
exec Typedef "10;42;16", ';'

part
1 10
2 42
3 16
Ora l'ultima parte, ho già fatto gran parte del lavoro....

Devo fare in modo che quel 10 mi setti a 1 il docu_tipo10, il 42 mi setti a 1 docu_tipo42 sulla tabella_2. Puoi consigliarmi? ti prego scrivimi una parte di codice...