Generators em SQL Server, existe?!?

12/11/2004

0

Olá pessoal, como sabem estou reescrevendo meus codigos para acessar SQL Server... porem me deparei num prolema. GENERATORS

No firebird, usava-os para gerar numeros incrementados de ID, tem como eu fazer isso em SQL Server?

Se Sim, como pego este valor e acrescento mais 1.

no Firebird é select gen_id(generator, 1) from rdb$database

e como seria no SQL Server..?

Desde ja agradeco!


Titanius

Titanius

Responder

Posts

12/11/2004

Marcus.magalhaes

Boa tarde Titanius.

No SQL Server vc irá utilizar colunas IDENTITY, elas fazem o incremento automáticamente.

Ex.:
[color=red:0837abdf62]Create Table TESTE
(
Col1 Int Identity(1, 1) NOT NULL, [/color:0837abdf62][color=green:0837abdf62]-- onde o 1o. valor é o valor inicial e o 2o. é o valor do incremento[/color:0837abdf62][color=red:0837abdf62]
Col2 VarChar(10) NULL
)
GO

Insert Into TESTE (Col2) Values (´teste1´)
Insert Into TESTE (Col2) Values (´teste2´)
Insert Into TESTE (Col2) Values (´teste3´)
Insert Into TESTE (Col2) Values (´teste4´)
Select @@identity [/color:0837abdf62][color=green:0837abdf62]-- recupera o valor que foi inserido em Col1 = 4[/color:0837abdf62][color=red:0837abdf62]
GO

Select *
From TESTE
GO

Drop Table TESTE
GO[/color:0837abdf62]


No exemplo acima, será criada uma tabela que possuirá uma coluna int com valor auto incrementado, [b:0837abdf62]iniciando em 1 e sendo incrementado em 1[/b:0837abdf62].
Em seguida será feita a inserção dos dados informando somente o valor em Col2, pois o valor de Col1 já dado pelo SQL Server.
Sempre para recuperar o ultimo valor inserido em uma coluna identity, usa-se [b:0837abdf62]@@identity[/b:0837abdf62] imediatamente após o insert.

Espero ter ajudado.

Att,


Responder

12/11/2004

Titanius

Valeu cara...

agora outra questoa...

no firebird eu fazia

Var1 := Query1.FieldByName(´NOME´).ASString;

me retornava o conteudo de NOME,

agora no ADO eu uso:

Var1 := Query1.Parameters.ParamByName(´NOME´).Value;

ele me diz q nao existe NOME!

sendo que dei um [b:6ae2ad2adb]select * from Clientes[/b:6ae2ad2adb]

como pode nao Existir?!?

o problema eh q crio o ADOQuery via Codigo em tempo de execucao..

como posso concertar isso?

Desde ja agradeco :D


Responder

12/11/2004

Marcus.magalhaes

Oi Fellipe,

programação não é comigo, conheço um pouco de VB, pq parei de programar no 5.0 e muito, mas muito pouco de Delphi.

Att,


Responder

12/11/2004

Titanius

valeu manow... vou postar lah no delphi...


Responder

13/11/2004

Felipe_cduarte

Fala cara,

na Query vc deve utilizar o FieldByName() para retornar os campos... o Parameters.ParamByName() é utilizados para parametros... e

exemplo no SQL:

Select Nome
From Clientes
Where Codigo = :Parametro

pra vc pegar o campo ´Nome´ deve fazer:

Query.FieldByName(´Nome´).AsString

para passar o parametro utilize:

Query.Parameters.ParamByName(´Parametro´).Value

[]´s


Responder

15/11/2004

Titanius

Valeu manow..!


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar