comprobar existencia de un objeto tabla

21/05/2008 - 19:56 por Luis Mata | Informe spam
por que esto aveces funciona aveces no

if (select count(*) from sysobjects where xtype = 'U' and name = 'dtabla')=1

BEGIN

drop table dtabla

END

hago el select solo y da 1 pero ejecuta el procedimiento y no borra la
tabla.

pero correo esas lineas manualmente y si funciona



Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613

Preguntas similare

Leer las respuestas

#1 Luis Mata
21/05/2008 - 20:01 | Informe spam
este es el error
Msg 213, Level 16, State 1, Procedure ventas_tiendas_all, Line 13

Insert Error: Column name or number of supplied values does not match table
definition.

aclaro que el procedimiento primero comprueba la tabla si existe lo borra
luego lo vuelve a crear, pero apesar que existe no lo borra lo tengo que
borrar manualmente recien ahi funciona

Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Luis Mata" escribió en el mensaje
news:eQ$
por que esto aveces funciona aveces no

if (select count(*) from sysobjects where xtype = 'U' and name =
'dtabla')=1

BEGIN

drop table dtabla

END

hago el select solo y da 1 pero ejecuta el procedimiento y no borra la
tabla.

pero correo esas lineas manualmente y si funciona



Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613



Respuesta Responder a este mensaje
#2 Gux (MVP)
21/05/2008 - 21:19 | Informe spam
Ayudaría mucho si usted muestra el procedimiento ventas_tiendas_all o por
favor muestre la línea 13, para que no estemos adivinando.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Luis Mata" wrote:

este es el error
Msg 213, Level 16, State 1, Procedure ventas_tiendas_all, Line 13

Insert Error: Column name or number of supplied values does not match table
definition.

aclaro que el procedimiento primero comprueba la tabla si existe lo borra
luego lo vuelve a crear, pero apesar que existe no lo borra lo tengo que
borrar manualmente recien ahi funciona

Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Luis Mata" escribió en el mensaje
news:eQ$
> por que esto aveces funciona aveces no
>
> if (select count(*) from sysobjects where xtype = 'U' and name =
> 'dtabla')=1
>
> BEGIN
>
> drop table dtabla
>
> END
>
> hago el select solo y da 1 pero ejecuta el procedimiento y no borra la
> tabla.
>
> pero correo esas lineas manualmente y si funciona
>
>
>
> Att
> Luis Mata Figueroa
> Área Informática
> Centro Cerámico Las Flores SAC
> RPC: 993597297
> TEL: 6174613
>
>
>



Respuesta Responder a este mensaje
#3 Luis Mata
21/05/2008 - 22:01 | Informe spam
Aqui les paso el procedure, ya no me sale el error cuando borro la tabla
dtabla pero como se ve esta antes de la linea 13

ALTER procedure [dbo].[ventas_tiendas_all] @alm char(2), @mes1 char(10),
@mes2 CHAR(10), @modo int,@prov char(6)
as
if (select count(*) from sysobjects where xtype = 'U' and name = 'dtabla')=1
BEGIN
drop table dtabla
END
DECLARE @CAMPO varCHAR(6),@ejecuta varchar(150),@nbd varchar(6)
declare @vcodigo char(13),@vcantidad decimal(12,2),@ejecxbd
varchar(200),@ejecxtie varchar(250)
create table dtabla(proveedor char(6),codigo char(13),descripcion
varchar(150),guia int, costo decimal(12,4),publico decimal(12,4),
vtatotal decimal(12,2))
if @prov=''
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10'
end
else
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10' and cod3provee=@prov
end
declare bdatos cursor for select nombre from maestro.dbo.openbd where based
!=9
open bdatos
fetch next from bdatos into @nbd
while @@fetch_status = 0
begin
set @campo = @nbd
set @ejecuta = 'alter table dtabla add '+@campo+' decimal(12,2) default 0
not null'
exec (@ejecuta)
if @prov=''
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' group by codarticul'
end
else
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' and proveedor='+''''+@prov+''''+' group
by codarticul'
end
exec (@ejecxtie)

open ventas
fetch next from ventas into @vcodigo,@vcantidad
while @@fetch_status = 0
begin
set @ejecxbd = 'update dtabla set guia = 1, '+@campo+' = '+cast(@vcantidad
as varchar(15))+',vtatotal=vtatotal+'+cast(@vcantidad as varchar(15))+
' where codigo='+''''+@vcodigo+''''
exec (@ejecxbd)
fetch next from ventas into @vcodigo,@vcantidad
end
deallocate ventas
fetch next from bdatos into @nbd
end
deallocate bdatos
alter table dtabla add totalc decimal (12,2) default 0 not null
alter table dtabla add totalp decimal (12,2) default 0 not null
update dtabla set totalc = costo*vtatotal,totalp = publico*vtatotal
if @modo=0
begin
select * from dtabla
end
else
begin
select * from dtabla where guia = 1
end
drop table dtabla


Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Gux (MVP)" escribió en el mensaje
news:
Ayudaría mucho si usted muestra el procedimiento ventas_tiendas_all o por
favor muestre la línea 13, para que no estemos adivinando.

Gustavo Larriera, Microsoft MVP
https://mvp.support.microsoft.com/p...o.larriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"Luis Mata" wrote:

este es el error
Msg 213, Level 16, State 1, Procedure ventas_tiendas_all, Line 13

Insert Error: Column name or number of supplied values does not match
table
definition.

aclaro que el procedimiento primero comprueba la tabla si existe lo borra
luego lo vuelve a crear, pero apesar que existe no lo borra lo tengo que
borrar manualmente recien ahi funciona

Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Luis Mata" escribió en el mensaje
news:eQ$
> por que esto aveces funciona aveces no
>
> if (select count(*) from sysobjects where xtype = 'U' and name >> > 'dtabla')=1
>
> BEGIN
>
> drop table dtabla
>
> END
>
> hago el select solo y da 1 pero ejecuta el procedimiento y no borra la
> tabla.
>
> pero correo esas lineas manualmente y si funciona
>
>
>
> Att
> Luis Mata Figueroa
> Área Informática
> Centro Cerámico Las Flores SAC
> RPC: 993597297
> TEL: 6174613
>
>
>



Respuesta Responder a este mensaje
#4 Alejandro Mesa
21/05/2008 - 22:20 | Informe spam
Luis Mata,

Cual version de SQL Server usas?

Preferible que referencies los objetos usando su owner / schema, depende de
que version usas.

IF OBJECT_ID('dbo.mi_tabla', 'U') IS NOT NULL
DROP TABLE dbo.mi_tabla

Nos puedes decir el resultado de:

select *
from information_schema.tables
where table_name = 'dtabla'
GO


AMB


"Luis Mata" wrote:

Aqui les paso el procedure, ya no me sale el error cuando borro la tabla
dtabla pero como se ve esta antes de la linea 13

ALTER procedure [dbo].[ventas_tiendas_all] @alm char(2), @mes1 char(10),
@mes2 CHAR(10), @modo int,@prov char(6)
as
if (select count(*) from sysobjects where xtype = 'U' and name = 'dtabla')=1
BEGIN
drop table dtabla
END
DECLARE @CAMPO varCHAR(6),@ejecuta varchar(150),@nbd varchar(6)
declare @vcodigo char(13),@vcantidad decimal(12,2),@ejecxbd
varchar(200),@ejecxtie varchar(250)
create table dtabla(proveedor char(6),codigo char(13),descripcion
varchar(150),guia int, costo decimal(12,4),publico decimal(12,4),
vtatotal decimal(12,2))
if @prov=''
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10'
end
else
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10' and cod3provee=@prov
end
declare bdatos cursor for select nombre from maestro.dbo.openbd where based
!=9
open bdatos
fetch next from bdatos into @nbd
while @@fetch_status = 0
begin
set @campo = @nbd
set @ejecuta = 'alter table dtabla add '+@campo+' decimal(12,2) default 0
not null'
exec (@ejecuta)
if @prov=''
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' group by codarticul'
end
else
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' and proveedor='+''''+@prov+''''+' group
by codarticul'
end
exec (@ejecxtie)

open ventas
fetch next from ventas into @vcodigo,@vcantidad
while @@fetch_status = 0
begin
set @ejecxbd = 'update dtabla set guia = 1, '+@campo+' = '+cast(@vcantidad
as varchar(15))+',vtatotal=vtatotal+'+cast(@vcantidad as varchar(15))+
' where codigo='+''''+@vcodigo+''''
exec (@ejecxbd)
fetch next from ventas into @vcodigo,@vcantidad
end
deallocate ventas
fetch next from bdatos into @nbd
end
deallocate bdatos
alter table dtabla add totalc decimal (12,2) default 0 not null
alter table dtabla add totalp decimal (12,2) default 0 not null
update dtabla set totalc = costo*vtatotal,totalp = publico*vtatotal
if @modo=0
begin
select * from dtabla
end
else
begin
select * from dtabla where guia = 1
end
drop table dtabla


Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Gux (MVP)" escribió en el mensaje
news:
> Ayudaría mucho si usted muestra el procedimiento ventas_tiendas_all o por
> favor muestre la línea 13, para que no estemos adivinando.
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "Luis Mata" wrote:
>
>> este es el error
>> Msg 213, Level 16, State 1, Procedure ventas_tiendas_all, Line 13
>>
>> Insert Error: Column name or number of supplied values does not match
>> table
>> definition.
>>
>> aclaro que el procedimiento primero comprueba la tabla si existe lo borra
>> luego lo vuelve a crear, pero apesar que existe no lo borra lo tengo que
>> borrar manualmente recien ahi funciona
>>
>> Att
>> Luis Mata Figueroa
>> Área Informática
>> Centro Cerámico Las Flores SAC
>> RPC: 993597297
>> TEL: 6174613
>>
>>
>> "Luis Mata" escribió en el mensaje
>> news:eQ$
>> > por que esto aveces funciona aveces no
>> >
>> > if (select count(*) from sysobjects where xtype = 'U' and name > >> > 'dtabla')=1
>> >
>> > BEGIN
>> >
>> > drop table dtabla
>> >
>> > END
>> >
>> > hago el select solo y da 1 pero ejecuta el procedimiento y no borra la
>> > tabla.
>> >
>> > pero correo esas lineas manualmente y si funciona
>> >
>> >
>> >
>> > Att
>> > Luis Mata Figueroa
>> > Área Informática
>> > Centro Cerámico Las Flores SAC
>> > RPC: 993597297
>> > TEL: 6174613
>> >
>> >
>> >
>>
>>
>>



Respuesta Responder a este mensaje
#5 Luis Mata
21/05/2008 - 22:41 | Informe spam
sql 2005 sp2


Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Alejandro Mesa" escribió en el
mensaje news:
Luis Mata,

Cual version de SQL Server usas?

Preferible que referencies los objetos usando su owner / schema, depende
de
que version usas.

IF OBJECT_ID('dbo.mi_tabla', 'U') IS NOT NULL
DROP TABLE dbo.mi_tabla

Nos puedes decir el resultado de:

select *
from information_schema.tables
where table_name = 'dtabla'
GO


AMB


"Luis Mata" wrote:

Aqui les paso el procedure, ya no me sale el error cuando borro la tabla
dtabla pero como se ve esta antes de la linea 13

ALTER procedure [dbo].[ventas_tiendas_all] @alm char(2), @mes1 char(10),
@mes2 CHAR(10), @modo int,@prov char(6)
as
if (select count(*) from sysobjects where xtype = 'U' and name =
'dtabla')=1
BEGIN
drop table dtabla
END
DECLARE @CAMPO varCHAR(6),@ejecuta varchar(150),@nbd varchar(6)
declare @vcodigo char(13),@vcantidad decimal(12,2),@ejecxbd
varchar(200),@ejecxtie varchar(250)
create table dtabla(proveedor char(6),codigo char(13),descripcion
varchar(150),guia int, costo decimal(12,4),publico decimal(12,4),
vtatotal decimal(12,2))
if @prov=''
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10'
end
else
begin
insert into dtabla select cod3provee,codarticul,descripcio,0 as
guia,costo3,precvendol,0 as total
from bdcho.dbo.invmatpr where coidtalm = '10' and cod3provee=@prov
end
declare bdatos cursor for select nombre from maestro.dbo.openbd where
based
!=9
open bdatos
fetch next from bdatos into @nbd
while @@fetch_status = 0
begin
set @campo = @nbd
set @ejecuta = 'alter table dtabla add '+@campo+' decimal(12,2) default
0
not null'
exec (@ejecuta)
if @prov=''
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' group by codarticul'
end
else
begin
set @ejecxtie = 'declare ventas cursor for select
codarticul,sum(cantidad) as cantidad from '+@campo+
'.dbo.archtra3 where fecha between '+''''+@mes1+''''+' and
'+''''+@mes2+''''+
' and coidtalm='+''''+@alm+''''+' and proveedor='+''''+@prov+''''+'
group
by codarticul'
end
exec (@ejecxtie)

open ventas
fetch next from ventas into @vcodigo,@vcantidad
while @@fetch_status = 0
begin
set @ejecxbd = 'update dtabla set guia = 1, '+@campo+' =
'+cast(@vcantidad
as varchar(15))+',vtatotal=vtatotal+'+cast(@vcantidad as varchar(15))+
' where codigo='+''''+@vcodigo+''''
exec (@ejecxbd)
fetch next from ventas into @vcodigo,@vcantidad
end
deallocate ventas
fetch next from bdatos into @nbd
end
deallocate bdatos
alter table dtabla add totalc decimal (12,2) default 0 not null
alter table dtabla add totalp decimal (12,2) default 0 not null
update dtabla set totalc = costo*vtatotal,totalp = publico*vtatotal
if @modo=0
begin
select * from dtabla
end
else
begin
select * from dtabla where guia = 1
end
drop table dtabla


Att
Luis Mata Figueroa
Área Informática
Centro Cerámico Las Flores SAC
RPC: 993597297
TEL: 6174613


"Gux (MVP)" escribió en el mensaje
news:
> Ayudaría mucho si usted muestra el procedimiento ventas_tiendas_all o
> por
> favor muestre la línea 13, para que no estemos adivinando.
>
> Gustavo Larriera, Microsoft MVP
> https://mvp.support.microsoft.com/p...o.larriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna
> clase.
>
>
>
> "Luis Mata" wrote:
>
>> este es el error
>> Msg 213, Level 16, State 1, Procedure ventas_tiendas_all, Line 13
>>
>> Insert Error: Column name or number of supplied values does not match
>> table
>> definition.
>>
>> aclaro que el procedimiento primero comprueba la tabla si existe lo
>> borra
>> luego lo vuelve a crear, pero apesar que existe no lo borra lo tengo
>> que
>> borrar manualmente recien ahi funciona
>>
>> Att
>> Luis Mata Figueroa
>> Área Informática
>> Centro Cerámico Las Flores SAC
>> RPC: 993597297
>> TEL: 6174613
>>
>>
>> "Luis Mata" escribió en el mensaje
>> news:eQ$
>> > por que esto aveces funciona aveces no
>> >
>> > if (select count(*) from sysobjects where xtype = 'U' and name >> >> > 'dtabla')=1
>> >
>> > BEGIN
>> >
>> > drop table dtabla
>> >
>> > END
>> >
>> > hago el select solo y da 1 pero ejecuta el procedimiento y no borra
>> > la
>> > tabla.
>> >
>> > pero correo esas lineas manualmente y si funciona
>> >
>> >
>> >
>> > Att
>> > Luis Mata Figueroa
>> > Área Informática
>> > Centro Cerámico Las Flores SAC
>> > RPC: 993597297
>> > TEL: 6174613
>> >
>> >
>> >
>>
>>
>>



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