Array
(
)

.NextVal do Oracle no SQL SERVER

Murilo-jau
   - 14 abr 2008

Olá, tenho um script em ORACLE em que faço um insert de dados de uma Tabela para outra. No campo ID que é Chave Primária uso o NEXTVAL para pegar o próximo valor do ID. Alguem sabe como possso fazer algo que dê o mesmo resultado no MSSQL ?

INSERT INTO TABELA1
SELECT EMPRESA,
FILIAL,
ID_MOVIREGIPROD.NEXTVAL,
ID_REGIPROD,
ID_PEDIVEND,
ID_CARGEXPE,
FROM TABELA2

Groove
   - 14 abr 2008

se eu não me engano caro murilo-jau,

seria assim

#Código

[ID_MOVIREGIPROD] [int] IDENTITY(1,1) NOT NULL


Tomara ter ajudado!!

Murilo-jau
   - 14 abr 2008

GROOVE, primeiramente obrigado pela atenção !

O que vc passou seria só como o Campo ID seria criado, blz!

Mas a questão é mesmo como faço na hora do SELECT do INSERT, pois se o select resultar 100 registros tenho que geram 100 novos ID´s para passar pro insert

Emerson
   - 14 abr 2008

não informe o campo ID
#Código

INSERT INTO TABELA1
 (campo_Filial, campo_Empresa,
  campo.ID_REGIPROD, campo.ID_PEDIVEND,
  campo.ID_CARGEXPE)
SELECT
  EMPRESA,
  FILIAL,
  ID_REGIPROD,
  ID_PEDIVEND,
  ID_CARGEXPE
FROM
  TABELA2

(isso só funciona se o campo ID_MOVIREGIPROD for do tipo IDENTITY)

Groove
   - 14 abr 2008

valew emerson.en!!!
quando fui postar vi sua msg!!!

valew mesmo!!!

Murilo-jau
   - 14 abr 2008

Oi, legal, valeu ai pelos post.
Mas é o seguinte esqueci de informar o mais importante, aqui onde trabalho foi decido fazer o seguinte:

*esse ID_MOVIREGIPROD ele é PK Numeric mas não foi criado como um IDENTITY
* Paralelamente existe uma tabela só para guardar o ID (TABELA3) aonde o campo ID_SEQUENCE é um campo Numeric IDENTITY.

Então ai o bixo pegou, pois eu teria que fazer tipo um Insert na TABELA3 dentro do INSERT na TABELA1!!
:roll:

Não sei se expliquei claramente.

Murilo-jau
   - 14 abr 2008

AHH, E TUDO ISSO É SÓ PARA UM SCRIPT APENAS, SÓ PRECISO RODA-LO PARA FAZER ALGUNS AJUSTES EM UMA TABELA (TABELA1)

Murilo-jau
   - 18 abr 2008

Resolvi, meio gambiarra, mas neste caso é a unica solução.

Criei uma table temporaria com um campo IDENTITY, e usei como contador de um select em que fiz o INsert na tabela1, depois fiz um select para ver quantos registro foram inseridos e fiz o Insert na tabela3, mas só para este caso, pois se o o sistema estivesse rodando iria dar pau de integridade se algum usuário inserisse algo na tabela 1.