STORED PROCEDURE NAO RETORNA @@IDENTITY
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
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
é ignorancia minha ou isto não é linguagem VB???
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
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
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.
O arquivo compactado está o projeto conpleto.
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[Ô])
res = cmd([Ô]ninsc[Ô])
Tente mudar isso para
res = cmd.Parameters([Ô]ninsc[Ô])
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[Ô])
SET @ninsc = @@IDENTITY;
ou assim
SET @ninsc = SCOPE_IDENTITY();
Ou no sistema faça assim
Set rs = cmd.Execute
res = rs([Ô]ninsc[Ô])
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
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
Cara KELLY
Essa mudança no Botão resolveu?
Boa sorte
Essa mudança no Botão resolveu?
Boa sorte
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!
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