STORED PROCEDURE NAO RETORNA @@IDENTITY

KELLY 11/11/2013 21:31:48
#431002
Boa noite pessoal,

Tenho um pequeno projeto que quero retornar o IDENTITY utilizando uma Stored Procedure, a SP está funcionando para inserir os registros, mas não está retornando o IDENTITY. Onde está o erro? Segue o exemplo do projeto na mensagem e o código da SP abaixo:

USE tempdb;
GO

IF OBJECT_ID([ô]dbo.Inserir[ô], [ô]P[ô]) IS NOT NULL
DROP PROCEDURE dbo.Inserir;
GO

CREATE PROCEDURE dbo.Inserir
@nome varchar(50),
@endereco varchar(50),
@email varchar(50),
@ninsc int output
AS
BEGIN
INSERT INTO dbo.cadastro(nome, endereco, email)
VALUES(@nome, @endereco, @email)
SET @ninsc = (SELECT @@IDENTITY);
--SELECT @@IDENTITY
--SET @ninsc = @@IDENTITY;
END
GO

EPISCOPAL 11/11/2013 23:18:33
#431005
é ignorancia minha ou isto não é linguagem VB???
AJSO 12/11/2013 00:04:00
#431007
Cara KELLY

Sua procedure falta um ponto e virgula no final da instrução INSERT

INSERT INTO dbo.cadastro(nome, endereco, email) VALUES(@nome, @endereco, @email);






CREATE PROCEDURE dbo.Inserir
@nome varchar(50),
@endereco varchar(50),
@email varchar(50),
@ninsc int output
AS
BEGIN
INSERT INTO dbo.cadastro(nome, endereco, email)
VALUES(@nome, @endereco, @email);
SET @ninsc = (SELECT @@IDENTITY);
--SELECT @@IDENTITY
--SET @ninsc = @@IDENTITY;
END
GO


Boa sorte
KELLY 12/11/2013 09:32:53
#431015
Pessoal, ainda continuo com problemas. O código está adicionando os registros normalmente no banco de dados, mas não estou conseguindo obter o retorno @@IDENTITY.
O arquivo compactado está o projeto conpleto.
OCELOT 12/11/2013 17:48:45
#431057
Talvez o problema seja porque no seu código você tenta acessar o parâmetro assim

res = cmd([Ô]ninsc[Ô])

Tente mudar isso para

res = cmd.Parameters([Ô]ninsc[Ô])
FILMAN 12/11/2013 20:23:37
#431066
Tente fazer assim

SET @ninsc = @@IDENTITY;

ou assim

SET @ninsc = SCOPE_IDENTITY();



Ou no sistema faça assim

Set rs = cmd.Execute

res = rs([Ô]ninsc[Ô])
AJSO 12/11/2013 21:36:40
#431077
KELLY

Modifiquei apenas o Botão no Form de seu projeto

Dessa forma ele retorna o ninsc que é um Campo do tipo int e OutPut na sua procedure.......

Private Sub cmdInserir_Click()

Set cmd = New ADODB.Command


With cmd
.ActiveConnection = conn
.CommandType = adCmdStoredProc
.CommandText = [Ô]Inserir[Ô]
.Parameters.Append cmd.CreateParameter([Ô]nome[Ô], adVarChar, adParamInput, 50, txtNome.Text)
.Parameters.Append cmd.CreateParameter([Ô]endereco[Ô], adVarChar, adParamInput, 50, txtEndereco.Text)
.Parameters.Append cmd.CreateParameter([Ô]email[Ô], adVarChar, adParamInput, 50, txtEmail.Text)
.Parameters.Append .CreateParameter([Ô]ninsc[Ô], adInteger, adParamOutput)
.Execute
End With

txtNumeroInscricao.Text = cmd([Ô]ninsc[Ô]).Value


Set rs = Nothing
Set cmd.ActiveConnection = Nothing

Call LimparCampos

End Sub




Boa Sorte
AJSO 14/11/2013 14:14:14
#431145
Cara KELLY


Essa mudança no Botão resolveu?
Boa sorte
KELLY 14/11/2013 23:18:18
#431169
Boa noite pessoal,

Testei todos os códigos, mas não consegui. Depois de muitas tentativas e pesquisas de modelos de código foi que eu tentei mudar a linha:

Set rs = cmd.Execute

Para

rs = cmd.Execute

Agora o código deu certo. Agradeço a todos vocês pela ajuda!
Tópico encerrado , respostas não são mais permitidas