Ir para conteúdo
Fórum Script Brasil
  • 0

Problema ao retornar valor de SP


kaadgar

Pergunta

Olá pessoal,

Estou com um problema que é o seguninte:

Tenho a SP de um sistema desktop e estou usando o mesmo serviço para uma interface web.

/****** Object: StoredProcedure [dbo].[sA473NOV01] Script Date: 02/18/2013 14:23:45 ******/

SET ANSI_NULLS OFF

GO

SET QUOTED_IDENTIFIER OFF

GO

ALTER PROCEDURE [dbo].[sA473NOV01] (

@pnEmpresa smallint,

@psNumGuia varchar(10),

@psTipoGuia varchar(1),

@pnNumContrato int,

@psPlano varchar(2),

@pnIdUsuario int,

@pnControle smallint,

@pnIdSolicitante int,

@pnIdLocalSolicitante smallint,

@pnIdMedico int,

@pnIdMedicoLocal smallint,

@pnIdPrestadorlRealizacao int,

@pnIdLocalidadeRealizacao smallint,

@psComentario varchar(7000),

@pnTabelaReferencia smallint,

@psProcedimento varchar(8),

@pnTipoAcomodacao smallint,

@pdSessoesPedida smallint,

@pdDataValidadeInicio datetime,

@pdDataValidadeFinal datetime,

@pnTipoInternacao smallint,

@pnSituacaoInternacao smallint,

@pdDataSolicitacao datetime,

@psSituacao varchar(1),

@pdDataSituacao datetime,

@pnTpEvento Varchar(1),

@pnGuiaRef Varchar(10),

@psFlagRecemNascido varchar(1),

@pnId_Anestesista int,

@pnId_Local_Anestesista smallint,

@psId_Porte_An varchar(3),

@pnQtd_porte_An decimal(25,4),

@psFlag_Video varchar(1),

@psTpAtendimento varchar(2),

@psNrGuiaAns varchar(20),

@psNrGuiaAnsRef varchar(20),

@psProcedimentoS1 varchar(8),

@psProcedimentoS2 varchar(8),

@psProcedimentoS3 varchar(8),

@psProcedimentoS4 varchar(8),

@pnCid varchar(10),

@pnCid_2 varchar(10),

@pnCid_3 varchar(10),

@pnCid_4 varchar(10),

@pnUsa_Log smallint = 0,

@pnID_Transacao int = 0

)

As

Declare @Return varchar(13)

Declare @sChave varchar(14) -- Para gravar log

Declare @nMesGuia varchar(2)

Declare @nAnoGuia varchar(4)

Declare @nSeqGuia varchar(6)

-- *******************************************************************************************

-- *** Sistema: SAUDE ***

-- *** Tela: SA470 - Cadastro de Guia para SADT / Consulta ***

-- *******************************************************************************************

Begin

Select @Return = '' -- Sucesso

Select @nAnoGuia = YEAR(GETDATE())

Select @nSeqGuia = ( SELECT CONVERT(VARCHAR, ISNULL(MAX(SEQ_GUIA)+1,1))

FROM SA_GUIA

WHERE EMPRESA = @pnEmpresa AND

ANO_GUIA = @nAnoGuia)

Select @nSeqGuia = REPLICATE('0', 6 - LEN(@nSeqGuia)) + @nSeqGuia

Select @psNumGuia = @nAnoGuia + @nSeqGuia

Select @psNrGuiaAns = REPLICATE('0', 7 - LEN(@pnIdMedico)) + CONVERT(VARCHAR(7), @pnIdMedico) +

REPLICATE('0', 2 - LEN(DATEPART(M, @pdDataSolicitacao))) + CONVERT(VARCHAR(2), DATEPART(M, @pdDataSolicitacao)) +

CONVERT(VARCHAR(2), RIGHT(YEAR(GETDATE()), 2) ) +

CASE @psTipoGuia WHEN '1' THEN 'C'

WHEN '2' THEN 'S'

WHEN '3' THEN 'H'

END +

REPLICATE('0', 8 - LEN(@nSeqGuia)) + CONVERT(VARCHAR(8), @nSeqGuia)

BEGIN TRANSACTION

INSERT INTO SA_GUIA (

EMPRESA,

NR_GUIA,

TP_GUIA,

NR_CONTRATO,

PLANO,

ID_USUARIO,

CONTROLE,

ANO_GUIA,

SEQ_GUIA,

ID_SOLICITANTE,

ID_LOCAL_SOLICITANTE,

ID_MEDICO,

ID_MEDICO_LOCAL,

ID_LOCAL_REALIZACAO,

ID_LOCAL_REALIZACAO_L,

COMENTARIO,

ID_TABELA_REF,

PROCEDIMENTO_P,

TP_ACOMODACAO,

SESSOES_PEDIDA,

DT_VALIDADE_INICIAL,

DT_VALIDADE_FINAL,

TP_INTERNACAO,

SITUACAO_ATENDIMENTO,

DT_SOLICITACAO,

SITUACAO,

DT_SITUACAO,

TP_EVENTO,

NR_GUIA_REFERENCIA,

FLAG_RN,

ID_ANESTESISTA ,

ID_LOCAL_ANESTESISTA ,

ID_PORTE_AN ,

QTD_PORTE_AN ,

FLAG_VIDEO,

TP_ATENDIMENTO,

NR_GUIA_ANS,

NR_GUIA_ANS_REF,

PROCEDIMENTO_S1,

PROCEDIMENTO_S2,

PROCEDIMENTO_S3,

PROCEDIMENTO_S4,

CID,

CID_2,

CID_3,

CID_4,

DT_CADASTRO,

USR_CADASTRO

)

VALUES

(

@pnEmpresa,

@psNumGuia,

@psTipoGuia,

@pnNumContrato,

@psPlano,

@pnIdUsuario,

@pnControle,

Convert(smallint,@nAnoGuia),

Convert(int,@nSeqGuia),

@pnIdSolicitante,

@pnIdLocalSolicitante,

@pnIdMedico,

@pnIdMedicoLocal,

@pnIdPrestadorlRealizacao,

@pnIdLocalidadeRealizacao,

@psComentario,

@pnTabelaReferencia,

@psProcedimento,

@pnTipoAcomodacao,

@pdSessoesPedida,

@pdDataValidadeInicio,

@pdDataValidadeFinal,

@pnTipoInternacao,

@pnSituacaoInternacao,

@pdDataSolicitacao,

@psSituacao,

@pdDataSituacao,

@pnTpEvento,

CASE WHEN @pnGuiaRef IS NULL THEN @psNumGuia ELSE @pnGuiaRef END,

@psFlagRecemNascido,

@pnId_Anestesista,

@pnId_Local_Anestesista,

@psId_Porte_An,

@pnQtd_porte_An,

@psFlag_Video,

@psTpAtendimento,

@psNrGuiaAns,

@psNrGuiaAnsRef,

@psProcedimentoS1,

@psProcedimentoS2,

@psProcedimentoS3,

@psProcedimentoS4,

@pnCid,

@pnCid_2,

@pnCid_3,

@pnCid_4,

GETDATE(),

USER_NAME()

)

Select @Return = CONVERT(VARCHAR(13), @@ERROR)

If (@Return <> '0' And @Return IS NOT NULL)

Begin

Goto ERRO_SQL

End

If @pnUsa_Log = 1

Begin

Select @sChave = 'EMPRESA= + CONVERT(VARCHAR,@pnEmpresa) + ' AND NR_GUIA=' + @psNumGuia

Execute PB100LOG01 '', @pnID_Transacao, @sChave, @Return

If (@Return <> '0' And @Return IS NOT NULL)

Begin

Goto ERRO_SQL

End

End

COMMIT TRANSACTION

Goto FIM

ERRO_SQL:

ROLLBACK TRANSACTION

Goto FIM

FIM:

Select @Return , @psNumGuia, @psNrGuiaAns

End

Meu código está em C# e estou fazendo o retorno da seguinte forma:

con = new SqlConnection(ConnectionString);

con.Open();

#region paramReturn

SqlParameter paramReturnValue = new SqlParameter();

paramReturnValue.ParameterName = "@psNumGuia";

paramReturnValue.SqlDbType = SqlDbType.VarChar;

paramReturnValue.SourceColumn = null;

paramReturnValue.Direction = ParameterDirection.ReturnValue;

#endregion

#region ParamProc

SqlCommand storedProcCommand = new SqlCommand("SA473NOV01", con);

storedProcCommand.CommandType = CommandType.StoredProcedure;

storedProcCommand.Parameters.AddWithValue("@pnEmpresa", entity.pnEmpresa);

storedProcCommand.Parameters.AddWithValue("@psNumGuia", entity.psNumGuia);

storedProcCommand.Parameters.AddWithValue("@psTipoGuia", entity.psTipoGuia);

storedProcCommand.Parameters.AddWithValue("@pnNumContrato", entity.pnNumContrato);

storedProcCommand.Parameters.AddWithValue("@psPlano", entity.psPlano);

storedProcCommand.Parameters.AddWithValue("@pnIdUsuario", entity.pnIdUsuario);

storedProcCommand.Parameters.AddWithValue("@pnControle", entity.pnControle);

storedProcCommand.Parameters.AddWithValue("@pnIdSolicitante", entity.pnIdSolicitante);

if (String.IsNullOrEmpty(entity.pnIdLocalSolicitante.ToString()))

storedProcCommand.Parameters.AddWithValue("@pnIdLocalSolicitante", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@pnIdLocalSolicitante", entity.pnIdLocalSolicitante);

storedProcCommand.Parameters.AddWithValue("@pnIdMedico", entity.pnIdMedico);

storedProcCommand.Parameters.AddWithValue("@pnIdMedicoLocal", entity.pnIdMedicoLocal);

storedProcCommand.Parameters.AddWithValue("@pnIdPrestadorlRealizacao", entity.pnIdPrestadorlRealizacao);

storedProcCommand.Parameters.AddWithValue("@pnIdLocalidadeRealizacao", entity.pnIdLocalidadeRealizacao);

storedProcCommand.Parameters.AddWithValue("@psComentario", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnTabelaReferencia", entity.pnTabelaReferencia);

storedProcCommand.Parameters.AddWithValue("@psProcedimento", entity.psProcedimento);

storedProcCommand.Parameters.AddWithValue("@pnTipoAcomodacao", entity.pnTipoAcomodacao);

storedProcCommand.Parameters.AddWithValue("@pdSessoesPedida", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pdDataValidadeInicio", entity.pdDataValidadeInicio);

storedProcCommand.Parameters.AddWithValue("@pdDataValidadeFinal", entity.pdDataValidadeFinal);

storedProcCommand.Parameters.AddWithValue("@pnTipoInternacao", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnSituacaoInternacao", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pdDataSolicitacao", entity.pdDataSolicitacao);

storedProcCommand.Parameters.AddWithValue("@psSituacao", "0");

storedProcCommand.Parameters.AddWithValue("@pdDataSituacao", entity.pdDataSituacao);

storedProcCommand.Parameters.AddWithValue("@pnTpEvento", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnGuiaRef", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psFlagRecemNascido", entity.psFlagRecemNascido);

storedProcCommand.Parameters.AddWithValue("@pnId_Anestesista", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnId_Local_Anestesista", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psId_Porte_An", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnQtd_porte_An", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psFlag_Video", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psTpAtendimento", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psNrGuiaAns", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@psNrGuiaAnsRef", DBNull.Value);

if (String.IsNullOrEmpty(entity.psProcedimentoS1))

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS1", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS1", entity.psProcedimentoS1);

if (String.IsNullOrEmpty(entity.psProcedimentoS2))

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS2", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS2", entity.psProcedimentoS2);

if (String.IsNullOrEmpty(entity.psProcedimentoS3))

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS3", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS3", entity.psProcedimentoS3);

if (String.IsNullOrEmpty(entity.psProcedimentoS4))

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS4", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@psProcedimentoS4", entity.psProcedimentoS4);

storedProcCommand.Parameters.AddWithValue("@pnCid", entity.pnCid);

if (String.IsNullOrEmpty(entity.pnCid_2))

storedProcCommand.Parameters.AddWithValue("@pnCid_2", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@pnCid_2", entity.pnCid_2);

if (String.IsNullOrEmpty(entity.pnCid_3))

storedProcCommand.Parameters.AddWithValue("@pnCid_3", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@pnCid_3", entity.pnCid_3);

if (String.IsNullOrEmpty(entity.pnCid_4))

storedProcCommand.Parameters.AddWithValue("@pnCid_4", DBNull.Value);

else

storedProcCommand.Parameters.AddWithValue("@pnCid_4", entity.pnCid_4);

storedProcCommand.Parameters.AddWithValue("@pnUsa_Log", DBNull.Value);

storedProcCommand.Parameters.AddWithValue("@pnID_Transacao", DBNull.Value);

storedProcCommand.Parameters.Add(paramReturnValue);

#endregion

var result = storedProcCommand.ExecuteNonQuery();

var returnValue = storedProcCommand.Parameters["@psNumGuia].Value;

SqlDataReader _rsData;

con.Close();

Não consigo fazer retornar os valores da SP!

Tentei criar 3 variáveis de retorno, uma para cada parâmetro e consegui somente resgatar o primeiro... o restante vindo nulo!

Obrigado desde já!

Abraços.

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Salve,

Veja se te ajuda (não sei bem se vai funcionar porque estou só usando EF4)

script.sql

USE TESTE
GO

ALTER PROCEDURE RETORNAVALORES
AS
BEGIN;
SET NOCOUNT ON
SELECT RAND()
END;
GO
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="Button1" runat="server" Text="Executar" onclick="Button1_Click" 
            Width="140px" />    
        <br />
        <br />
        <asp:Label ID="Label1" runat="server"></asp:Label>
    </div>
    </form>
</body>
</html>
Default.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Web.Configuration;
using System.Configuration;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        ConnectionStringSettings strCon = WebConfigurationManager.ConnectionStrings["local"] as ConnectionStringSettings;
        using (SqlConnection con = new SqlConnection(strCon.ConnectionString))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("EXEC RETORNAVALORES", con);
            var valor = cmd.ExecuteScalar();
            Label1.Text = valor.ToString();
        }
    }
}

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Novo exemplo:

ALTER PROCEDURE RETORNA_VALOR 
    @SAIDA FLOAT OUTPUT
AS
BEGIN
    SET @SAIDA = RAND();
END
GO
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Configuration;
using System.Data;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        ConnectionStringSettings strCon = WebConfigurationManager.ConnectionStrings["local"] as ConnectionStringSettings;
        using (SqlConnection con = new SqlConnection(strCon.ConnectionString)) {
            con.Open();
            SqlCommand cmd = new SqlCommand("RETORNA_VALOR", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@saida", SqlDbType.Float).Direction = ParameterDirection.Output;
            cmd.ExecuteNonQuery();
            Label1.Text = cmd.Parameters["@saida"].Value.ToString();
        }
    }
}

Link para o comentário
Compartilhar em outros sites

  • 0

Exemplo 3

USE TESTE
GO

CREATE PROCEDURE DEMO
AS
BEGIN
SET NOCOUNT ON
DECLARE @NOME VARCHAR(100);
SET @NOME = 'WELLINGTON RODRIGUES';
SELECT @NOME;
END
GO

EXEC DEMO
Default3.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Web.Configuration;

public partial class Default3 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        ConnectionStringSettings strCon = WebConfigurationManager.ConnectionStrings["local"] as ConnectionStringSettings;
        using (SqlConnection con = new SqlConnection(strCon.ConnectionString))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("DEMO", con);
            var nome = cmd.ExecuteScalar();
            Label1.Text = nome.ToString();
        }
    }
}

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...