problemas adicionando columnas con el analizador de consultas

08/01/2004 - 00:56 por Avgvstvs | Informe spam
El problema es el siguiente estoy creando columnas en una tabla temporal
mediante la clausula:
alter table #tab_1 add col_1

y posteriormente ingreso valores a la columna, lo cual se ejecuta
correctamente, pero posteriormente en el mismo procedimiento almacenado
deseo llamar la columna directamente con el siguiente select:

select col_1 from #tab_1

y me reporta el siguiente error:

Servidor: mensaje 207, nivel 16, estado 3, procedimiento ProcPrueba,
línea 10
El nombre de columna 'col_1' no es válido.

pero cuando lo llamo mediante el select * from #tab_1 si me aparecen todas
las columnas de la tabla incluyendo col_1 correctamente.

El problema es que necesito asignar el valor de la columna en una variable y
la clausula select que utilizo para ello no la acepta el SQL con el error
descrito anteriormente.

Para mejor ilustración de mi caso pueden correr el siguiente código:

create procedure _prueba
as
select 'dato1', '1'
go

create table #AA (col_1 varchar(10))
alter table #AA add [col_2] varchar(10) null
insert into #AA execute _prueba
/*
Si se ejecuta la siguiente clausula select si funciona:
select * from #AA
*/

select col_2 from #AA
go

drop table #AA
drop procedure _prueba
go

Preguntas similare

Leer las respuestas

#1 Maximiliano Damian Accotto
08/01/2004 - 01:06 | Informe spam
hola, mira yo lo hice asi y me funciono a la perfeccion.

create table #pepe (col_1 varchar(10))
go
alter table #pepe add [col_2] varchar(10) null
go

select [col_2] from #pepe
go


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Avgvstvs" escribió en el mensaje
news:
El problema es el siguiente estoy creando columnas en una tabla temporal
mediante la clausula:
alter table #tab_1 add col_1

y posteriormente ingreso valores a la columna, lo cual se ejecuta
correctamente, pero posteriormente en el mismo procedimiento almacenado
deseo llamar la columna directamente con el siguiente select:

select col_1 from #tab_1

y me reporta el siguiente error:

Servidor: mensaje 207, nivel 16, estado 3, procedimiento ProcPrueba,
línea 10
El nombre de columna 'col_1' no es válido.

pero cuando lo llamo mediante el select * from #tab_1 si me aparecen todas
las columnas de la tabla incluyendo col_1 correctamente.

El problema es que necesito asignar el valor de la columna en una variable


y
la clausula select que utilizo para ello no la acepta el SQL con el error
descrito anteriormente.

Para mejor ilustración de mi caso pueden correr el siguiente código:

create procedure _prueba
as
select 'dato1', '1'
go

create table #AA (col_1 varchar(10))
alter table #AA add [col_2] varchar(10) null
insert into #AA execute _prueba
/*
Si se ejecuta la siguiente clausula select si funciona:
select * from #AA
*/

select col_2 from #AA
go

drop table #AA
drop procedure _prueba
go


Respuesta Responder a este mensaje
#2 Adrian Garcia
08/01/2004 - 08:06 | Informe spam
El problema se encuentra aqui:

create table #AA (col_1 varchar(10))
alter table #AA add [col_2] varchar(10) null
insert into #AA execute _prueba



Tienes un CREATE TABLA seguido de un ALTER TABLE.
Para que funcione correctamente debes hacer esto

create table #AA (col_1 varchar(10))
alter table #AA add [col_2] varchar(10) null


GO

insert into #AA execute _prueba



Insertar el comando GO despues del ALTER TABLE

Saludos

Adrian D. Garcia
NDSoft

"Avgvstvs" wrote in message
news:
El problema es el siguiente estoy creando columnas en una tabla temporal
mediante la clausula:
alter table #tab_1 add col_1

y posteriormente ingreso valores a la columna, lo cual se ejecuta
correctamente, pero posteriormente en el mismo procedimiento almacenado
deseo llamar la columna directamente con el siguiente select:

select col_1 from #tab_1

y me reporta el siguiente error:

Servidor: mensaje 207, nivel 16, estado 3, procedimiento ProcPrueba,
línea 10
El nombre de columna 'col_1' no es válido.

pero cuando lo llamo mediante el select * from #tab_1 si me aparecen todas
las columnas de la tabla incluyendo col_1 correctamente.

El problema es que necesito asignar el valor de la columna en una variable


y
la clausula select que utilizo para ello no la acepta el SQL con el error
descrito anteriormente.

Para mejor ilustración de mi caso pueden correr el siguiente código:

create procedure _prueba
as
select 'dato1', '1'
go

create table #AA (col_1 varchar(10))
alter table #AA add [col_2] varchar(10) null
insert into #AA execute _prueba
/*
Si se ejecuta la siguiente clausula select si funciona:
select * from #AA
*/

select col_2 from #AA
go

drop table #AA
drop procedure _prueba
go


Respuesta Responder a este mensaje
#3 Avgvstvs
08/01/2004 - 14:34 | Informe spam
Gracias, por la respuesta, pero tengo el problema que el código expuesto lo
estoy corriendo dentro de un procedimiento almacenado y la instrucción GO se
aplica para el alter procedure y no para el alter table. El problema si no
estoy mal es como si el sql no actualizara internamente la estructura de la
tabla temporal después de la instrucción alter table, estoy en lo correcto?

También probé mediante un condicional crear la tabla temporal con los campos
que necesito, como lo demuestra el siguiente código:

declare @cond int
set @cond=1

if @cond=1
create table #tabla (col_1 varchar(10), col_2 int)
else
create table #tabla (col_1 varchar(10))

Pero al parecer el sql hace caso omiso de la estructura de programación y
muestra el siguiente error:
Ya hay un objeto con el nombre '#tabla' en la base de datos.

Tienen alguna otra pista con la que me puedan ayudar?


"Adrian Garcia" escribió en el mensaje
news:
El problema se encuentra aqui:

> create table #AA (col_1 varchar(10))
> alter table #AA add [col_2] varchar(10) null
> insert into #AA execute _prueba

Tienes un CREATE TABLA seguido de un ALTER TABLE.
Para que funcione correctamente debes hacer esto

> create table #AA (col_1 varchar(10))
> alter table #AA add [col_2] varchar(10) null
GO

> insert into #AA execute _prueba

Insertar el comando GO despues del ALTER TABLE

Saludos

Adrian D. Garcia
NDSoft

"Avgvstvs" wrote in message
news:
> El problema es el siguiente estoy creando columnas en una tabla temporal
> mediante la clausula:
> alter table #tab_1 add col_1
>
> y posteriormente ingreso valores a la columna, lo cual se ejecuta
> correctamente, pero posteriormente en el mismo procedimiento almacenado
> deseo llamar la columna directamente con el siguiente select:
>
> select col_1 from #tab_1
>
> y me reporta el siguiente error:
>
> Servidor: mensaje 207, nivel 16, estado 3, procedimiento ProcPrueba,
> línea 10
> El nombre de columna 'col_1' no es válido.
>
> pero cuando lo llamo mediante el select * from #tab_1 si me aparecen


todas
> las columnas de la tabla incluyendo col_1 correctamente.
>
> El problema es que necesito asignar el valor de la columna en una


variable
y
> la clausula select que utilizo para ello no la acepta el SQL con el


error
> descrito anteriormente.
>
> Para mejor ilustración de mi caso pueden correr el siguiente código:
>
> create procedure _prueba
> as
> select 'dato1', '1'
> go
>
> create table #AA (col_1 varchar(10))
> alter table #AA add [col_2] varchar(10) null
> insert into #AA execute _prueba
> /*
> Si se ejecuta la siguiente clausula select si funciona:
> select * from #AA
> */
>
> select col_2 from #AA
> go
>
> drop table #AA
> drop procedure _prueba
> go
>
>


Respuesta Responder a este mensaje
#4 Avgvstvs
08/01/2004 - 14:34 | Informe spam
Gracias, por la respuesta, pero tengo el problema que el código expuesto lo
estoy corriendo dentro de un procedimiento almacenado y la instrucción GO se
aplica para el alter procedure y no para el alter table. El problema si no
estoy mal es como si el sql no actualizara internamente la estructura de la
tabla temporal después de la instrucción alter table, estoy en lo correcto?

También probé mediante un condicional crear la tabla temporal con los campos
que necesito, como lo demuestra el siguiente código:

declare @cond int
set @cond=1

if @cond=1
create table #tabla (col_1 varchar(10), col_2 int)
else
create table #tabla (col_1 varchar(10))

Pero al parecer el sql hace caso omiso de la estructura de programación y
muestra el siguiente error:
Ya hay un objeto con el nombre '#tabla' en la base de datos.

Tienen alguna otra pista con la que me puedan ayudar?
"Maximiliano Damian Accotto" escribió
en el mensaje news:
hola, mira yo lo hice asi y me funciono a la perfeccion.

create table #pepe (col_1 varchar(10))
go
alter table #pepe add [col_2] varchar(10) null
go

select [col_2] from #pepe
go


Salu2 enormes

Maximiliano Damian Accotto

Fundicion San Cayetano S.A.
Gerente de IT
Buenos Aires - Argentina
-
Desarrollador 3 estrellas
http://www.microsoft.com/spanish/ms...efault.asp
-
(maxi_accotto[arroba]speedy.com.ar)
MSN:
"Avgvstvs" escribió en el mensaje
news:
> El problema es el siguiente estoy creando columnas en una tabla temporal
> mediante la clausula:
> alter table #tab_1 add col_1
>
> y posteriormente ingreso valores a la columna, lo cual se ejecuta
> correctamente, pero posteriormente en el mismo procedimiento almacenado
> deseo llamar la columna directamente con el siguiente select:
>
> select col_1 from #tab_1
>
> y me reporta el siguiente error:
>
> Servidor: mensaje 207, nivel 16, estado 3, procedimiento ProcPrueba,
> línea 10
> El nombre de columna 'col_1' no es válido.
>
> pero cuando lo llamo mediante el select * from #tab_1 si me aparecen


todas
> las columnas de la tabla incluyendo col_1 correctamente.
>
> El problema es que necesito asignar el valor de la columna en una


variable
y
> la clausula select que utilizo para ello no la acepta el SQL con el


error
> descrito anteriormente.
>
> Para mejor ilustración de mi caso pueden correr el siguiente código:
>
> create procedure _prueba
> as
> select 'dato1', '1'
> go
>
> create table #AA (col_1 varchar(10))
> alter table #AA add [col_2] varchar(10) null
> insert into #AA execute _prueba
> /*
> Si se ejecuta la siguiente clausula select si funciona:
> select * from #AA
> */
>
> select col_2 from #AA
> go
>
> drop table #AA
> drop procedure _prueba
> go
>
>


Respuesta Responder a este mensaje
#5 Maximiliano Damian Accotto
08/01/2004 - 14:43 | Informe spam
hmmmm, a ver lo que no entiendo es una cosa si me la explicas:

Vos generas primero una tabla si? y luego le agregas una columna? porque
haces esto y no directamente en la generacion de la tabla poner todo?

Salu2

Maximiliano Damian Accotto


"Avgvstvs" escribió en el mensaje
news:
Gracias, por la respuesta, pero tengo el problema que el código expuesto


lo
estoy corriendo dentro de un procedimiento almacenado y la instrucción GO


se
aplica para el alter procedure y no para el alter table. El problema si no
estoy mal es como si el sql no actualizara internamente la estructura de


la
tabla temporal después de la instrucción alter table, estoy en lo


correcto?

También probé mediante un condicional crear la tabla temporal con los


campos
que necesito, como lo demuestra el siguiente código:

declare @cond int
set @cond=1

if @cond=1
create table #tabla (col_1 varchar(10), col_2 int)
else
create table #tabla (col_1 varchar(10))

Pero al parecer el sql hace caso omiso de la estructura de programación y
muestra el siguiente error:
Ya hay un objeto con el nombre '#tabla' en la base de datos.

Tienen alguna otra pista con la que me puedan ayudar?
"Maximiliano Damian Accotto" escribió
en el mensaje news:
> hola, mira yo lo hice asi y me funciono a la perfeccion.
>
> create table #pepe (col_1 varchar(10))
> go
> alter table #pepe add [col_2] varchar(10) null
> go
>
> select [col_2] from #pepe
> go
>
>
> Salu2 enormes
>
> Maximiliano Damian Accotto
>
> Fundicion San Cayetano S.A.
> Gerente de IT
> Buenos Aires - Argentina
> -
> Desarrollador 3 estrellas
>


http://www.microsoft.com/spanish/ms...efault.asp
> -
> (maxi_accotto[arroba]speedy.com.ar)
> MSN:
> "Avgvstvs" escribió en el mensaje
> news:
> > El problema es el siguiente estoy creando columnas en una tabla


temporal
> > mediante la clausula:
> > alter table #tab_1 add col_1
> >
> > y posteriormente ingreso valores a la columna, lo cual se ejecuta
> > correctamente, pero posteriormente en el mismo procedimiento


almacenado
> > deseo llamar la columna directamente con el siguiente select:
> >
> > select col_1 from #tab_1
> >
> > y me reporta el siguiente error:
> >
> > Servidor: mensaje 207, nivel 16, estado 3, procedimiento


ProcPrueba,
> > línea 10
> > El nombre de columna 'col_1' no es válido.
> >
> > pero cuando lo llamo mediante el select * from #tab_1 si me aparecen
todas
> > las columnas de la tabla incluyendo col_1 correctamente.
> >
> > El problema es que necesito asignar el valor de la columna en una
variable
> y
> > la clausula select que utilizo para ello no la acepta el SQL con el
error
> > descrito anteriormente.
> >
> > Para mejor ilustración de mi caso pueden correr el siguiente código:
> >
> > create procedure _prueba
> > as
> > select 'dato1', '1'
> > go
> >
> > create table #AA (col_1 varchar(10))
> > alter table #AA add [col_2] varchar(10) null
> > insert into #AA execute _prueba
> > /*
> > Si se ejecuta la siguiente clausula select si funciona:
> > select * from #AA
> > */
> >
> > select col_2 from #AA
> > go
> >
> > drop table #AA
> > drop procedure _prueba
> > go
> >
> >
>
>


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida