none
Passar parametro para stored procedure RRS feed

  • Pergunta

  • Bom dia,

    A minha questão é a seguinte:

    Tenho uma aplicação em aspnet que quero passar parametros para uma stored procedure.

    Não consigo é passar valores inteiros.

    Alguém me pode ajudar.

    Segue o código:

    Aspnet:

     cmd.CommandType = CommandType.StoredProcedure;
                    cnn.Open();
                    cmd.Parameters.Add("@idcabgpesquisa", SqlDbType.Int).Value = Convert.ToInt32(idlinha.Value);
                    cmd.Parameters.Add("@ordenacao", SqlDbType.VarChar).Value = ordenacao;
                    cmd.Parameters.Add("@nomefich", SqlDbType.VarChar).Value = fichdestino;
                    cmd.Parameters.Add("@nomefichtemp", SqlDbType.VarChar).Value = tempfichdestino;
                    cmd.ExecuteNonQuery();
                    cnn.Close();

    Segue a procedure no sqlserver:

    ALTER PROCEDURE [dbo].[importapesq]
    	-- Add the parameters for the stored procedure here
    	@idcabgpesquisa int,
    	@nomefich char(40),
    	@nomefichtemp char(40),
    	@ordenacao varchar(400)
    AS
    BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    	-- interfering with SELECT statements.
    	SET NOCOUNT ON;
    	----@nome= ficheiro que guarda a pesquisa
    	----@nomefich ficheiro temporário que o utilizador trabalha
    	declare @ins varchar(5000)
    	declare @sel varchar(150)
    	declare @up varchar(150)
    	declare @copiar varchar(2000)
    	declare @del varchar(150)
    	
    	set @del='delete from '+@nomefichtemp
    	execute (@del)
    	
    	set @ins='insert into '+@nomefichtemp+' (ordem,checkado,iditem,codigoitem,dtstatus,dtcriacao,codalternativo,itemdesc,seq_ini,seq_fim,codlocal,
        situacao,contido,idtipoobjecto,fromdtime,todtime,codaltcont) 
       SELECT convert(varchar(25),GETDATE(),121)'+@ordenacao+', 1 as checkado, dbo.gc_items.iditem,dbo.gc_items.codigoitem,dbo.gc_items.dtstatus,dbo.gc_items.dtcriacao,
       dbo.gc_items.codalternativo,dbo.gc_items.itemdesc,dbo.gc_items.seq_ini,dbo.gc_items.seq_fim,
       dbo.gc_localizacoes.CodLocal,dbo.gc_situacao.Descricao AS Situacao,
       (select CodigoItem from dbo.gc_items as table1 where table1.IDItem = dbo.gc_items.IDContentor) as contido,
       dbo.gc_items.idtipoobjecto,dbo.gc_items.fromdtime,dbo.gc_items.todtime,
       (select Codalternativo from dbo.gc_items as table2 where table2.IDItem = dbo.gc_items.IDContentor) as codaltcont
    	  FROM dbo.gc_items LEFT JOIN 
    	  dbo.gc_clientes ON dbo.gc_items.IDCliente = dbo.gc_clientes.IDCliente LEFT JOIN 
    	 dbo.gc_localizacoes ON  dbo.gc_items.IDLocalizacao = dbo.gc_localizacoes.IDLocalizacao LEFT JOIN 
    	  dbo.gc_situacao ON dbo.gc_items.IDSituacao = dbo.gc_situacao.IDSituacao WHERE IDITEM in (select iditem from gc_tabela_gpesquisasdet where idcabgpesquisa='+@idcabgpesquisa+')';  

    Obrigado,

    Élio

    • Movido Gustavo Maia Aguiar quinta-feira, 5 de julho de 2012 01:56 (De:SQL Server - Desenvolvimento Geral)
    quarta-feira, 4 de julho de 2012 09:06

Respostas

Todas as Respostas

  • cmd.Parameters.AddWithValue("@idcabgpesquisa", Convert.ToInt32(idlinha.Value));
    ALTER PROCEDURE [dbo].[importapesq]
    	-- Add the parameters for the stored procedure here
    	@idcabgpesquisa as int,
    	@nomefich as char(40),
    	@nomefichtemp as char(40),
    	@ordenacao as varchar(400)



    Se a sugestão resolver o problema, favor marcar como Resposta.


    • Editado Lucas_Santos quarta-feira, 4 de julho de 2012 12:41
    quarta-feira, 4 de julho de 2012 12:41
  • Segue exemplo.

    SqlCommand sqlComm = new SqlCommand();
    sqlComm.Connection = dbFunctions.BDConnection;
    
    sqlComm.CommandType = System.Data.CommandType.StoredProcedure;
    
    sqlComm.CommandText = @"[base].[dbo].[nome da procedura]";
    
    sqlComm.Parameters.Add("codigo", System.Data.SqlDbType.Int);
    
    
    sqlComm.Parameters["codigo"].Direction = System.Data.ParameterDirection.Input;
                  
    sqlComm.Parameters["CODIGO"].Value = ponCodigo;
    
    sqlComm.ExecuteNonQuery();


    Ivan Ferraz, MCP,MCTS Desenvolvedor 3 Estrelas ASP.NET

    quarta-feira, 4 de julho de 2012 14:00
  • Elio,

    Alguma evolução nesta questão?

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.com/
    Twitter: @ferhenrique
    Entity Framework - Brasil: https://www.facebook.com/EntityFrameworkBrasil

    quinta-feira, 12 de julho de 2012 02:13
    Moderador
  • Fernando,

    Consegui resolver da seguinte maneira:

    aspx.cs C#

    Passei como Char
    
    cmd.Parameters.Add("@idcabgpesquisa", SqlDbType.Char).Value = idlinha.Value;

    stored procedure:

    Recebi como char
    
    ALTER PROCEDURE [dbo].[importapesqot]
    	-- Add the parameters for the stored procedure here
    	@idcabgpesquisa as char(10),

    Obrigado, Élio Godinho

    sexta-feira, 13 de julho de 2012 11:33