none
SCOPE_IDENTITY RRS feed

  • Pergunta

  • Criei a seguinte Stored Procedure para inserção de dados:

    ALTER PROCEDURE [dbo].[sp_InsercaoEPI_Requisicao] 
    (
    @id_EPI_EmpregadoRequisicao int output,
    @id_Empregado int,
    @dataRequisicao DateTime, 
    @id_tipoDeFornecimentoEPI int
    
    )
    AS
    INSERT INTO EPI_EmpregadoRequisicao ( id_Empregado, dataRequisicao, id_tipoDeFornecimentoEPI )
    VALUES (@id_Empregado, @dataRequisicao, @id_tipoDeFornecimentoEPI)
    Set @id_EPI_EmpregadoRequisicao = SCOPE_IDENTITY()

    E o código para executa-la:

    Set cmd = New ADODB.Command
        Dim ret
        Dim ParRetorno As ADODB.Parameter
        'Criar Requisição
        With cmd
            .ActiveConnection = cn
            .CommandType = adCmdStoredProc
            .Parameters.Append cmd.CreateParameter("@id_Empregado", adBigInt, adParamInput, , lng_idEmpregado)
            .Parameters.Append cmd.CreateParameter("@dataRequisicao", adDate, adParamInput, , FormatDateTime(Now, vbShortDate))
            .Parameters.Append cmd.CreateParameter("@id_tipoDeFornecimentoEPI", adBigInt, adParamInput, , Me.cbo_tipoDeFornecimento.Value)
            .CommandText = "sp_InsercaoEPI_Requisicao"
        End With
    
        Set ParRetorno = cmd.CreateParameter("@id_EPI_EmpregadoRequisicao", adBigInt, adParamOutput)
        cmd.Parameters.Append ParRetorno
        cmd.Execute
        ret = ParRetorno.Value

    O meu problema está em recuperar o valor do parâmetro (@id_EPI_EmpregadoRequisicao) que contem o valor do id do registro incluído. Ao executar o comando (.execute) aparece a mensagem:

    "Conversão implícita de tipo de dados para int não é permitido. Use a função CONVERT para executar esta consulta"

    [b]Ivanenko[/b]

    • Editado Ivanenko terça-feira, 11 de setembro de 2012 09:38
    terça-feira, 11 de setembro de 2012 05:10