Se puede o no se puede hacer esto.

22/07/2008 - 07:36 por MalKaViAN_NeT | Informe spam
tengo una funcion que uso siempre y me sirve para saber si el producto,
persona, usuario, etc. que se esta insertando existe ya en la base de datos
para asi no volverlo a registrar.

se trata de un store procedure por tabla(producto, cliente,etc.) que me dice
si ese nuevo registro ya esta ingresado.

me puse a pensar y Dije,, 'puedo ahorrar store procedures si pudiera
programas algo como esto':

create procedure funcionExiste @tabla (no se que tipo de dato seria), @campo
(-), @valor (-) as

declare @existe bit
declare @cantidad tinyint
select @cantidad = count(@campo) from @tabla where @campo =@valor

if @cantidad>0
set @existe=1
else
set @existe=0

SELECT @existe

GO

solo quiero saber si es posible ...si lo es! me pueden simplemente orientar
luego yo consigo hacerlo,

TODOS LOS COMENTARIOS SON ACEPTADOS

Saludos

http://www.tecnolust.com
a por las buenas ideas

Preguntas similare

Leer las respuestas

#6 MalKaViAN_NeT
25/07/2008 - 07:09 | Informe spam
Hola gracias ya pude hacer lo que quería gracias a tu ayuda,, gracias a todos
lo que opinaron en realidad, y si tienen algo mas que corregirme me gustaría
que lo hagan

Gracias por su tiempo Y

saludos
http://www.tecnolust.com
a por las buenas ideas


"Ricardo Junquera" wrote:

Hola
Podrási hacerloo con SQL dinámico algo parecido a lo que tienes pero tendrás
que construir las consultas en "varchar" y ejecutarlas.
Algo así:

create procedure funcionExiste @tabla varchar(xx), @campo
> varchar(xx), @valor (-) as
>
> declare @existe bit
> declare @cantidad tinyint
declare @Consulta varchar(256)
Set @Consulta='select ' + @cantidad + ' = count(' + @campo + ') from + '
+ @tabla + ' where ' + @campo + ' = + ' @valor
Exec (@Consulta)

>
> if @cantidad>0
> set @existe=1
> else
> set @existe=0
>
> SELECT @existe
>
> GO




Ricardo Junquera
Consultor Business Intelligence

BG&S Online Consultores
Ganadora del Premio Microsoft Business Awards 2008.
Partner de Soluciones : Satisfacción de Cliente.



"MalKaViAN_NeT" wrote:

> tengo una funcion que uso siempre y me sirve para saber si el producto,
> persona, usuario, etc. que se esta insertando existe ya en la base de datos
> para asi no volverlo a registrar.
>
> se trata de un store procedure por tabla(producto, cliente,etc.) que me dice
> si ese nuevo registro ya esta ingresado.
>
> me puse a pensar y Dije,, 'puedo ahorrar store procedures si pudiera
> programas algo como esto':
>
> create procedure funcionExiste @tabla (no se que tipo de dato seria), @campo
> (-), @valor (-) as
>
> declare @existe bit
> declare @cantidad tinyint
> select @cantidad = count(@campo) from @tabla where @campo =@valor
>
> if @cantidad>0
> set @existe=1
> else
> set @existe=0
>
> SELECT @existe
>
> GO
>
> solo quiero saber si es posible ...si lo es! me pueden simplemente orientar
> luego yo consigo hacerlo,
>
> TODOS LOS COMENTARIOS SON ACEPTADOS
>
> Saludos
>
> http://www.tecnolust.com
> a por las buenas ideas
Respuesta Responder a este mensaje
#7 MalKaViAN_NeT
25/07/2008 - 07:43 | Informe spam
Hola tu codigo me hizo enteder muchas cosas pero hay un problema, que al
tener la consulta en varchar y meter la variable cantidad de tipo int que lee
el count genera un error:

Error de sintaxis al convertir el valor varchar 'select ' para una columna
de tipo de datos int.

osea si estas concatenando todo tiene que ser cadena,, y si convierto a
cantidad como cadena ya no me sirve.


gracias de todas maneras como dije me hiso entender mas cosas.

saludos

http://www.tecnolust.com
a por las buenas ideas


"Ricardo Junquera" wrote:

Hola
Podrási hacerloo con SQL dinámico algo parecido a lo que tienes pero tendrás
que construir las consultas en "varchar" y ejecutarlas.
Algo así:

create procedure funcionExiste @tabla varchar(xx), @campo
> varchar(xx), @valor (-) as
>
> declare @existe bit
> declare @cantidad tinyint
declare @Consulta varchar(256)
Set @Consulta='select ' + @cantidad + ' = count(' + @campo + ') from + '
+ @tabla + ' where ' + @campo + ' = + ' @valor
Exec (@Consulta)

>
> if @cantidad>0
> set @existe=1
> else
> set @existe=0
>
> SELECT @existe
>
> GO




Ricardo Junquera
Consultor Business Intelligence

BG&S Online Consultores
Ganadora del Premio Microsoft Business Awards 2008.
Partner de Soluciones : Satisfacción de Cliente.



"MalKaViAN_NeT" wrote:

> tengo una funcion que uso siempre y me sirve para saber si el producto,
> persona, usuario, etc. que se esta insertando existe ya en la base de datos
> para asi no volverlo a registrar.
>
> se trata de un store procedure por tabla(producto, cliente,etc.) que me dice
> si ese nuevo registro ya esta ingresado.
>
> me puse a pensar y Dije,, 'puedo ahorrar store procedures si pudiera
> programas algo como esto':
>
> create procedure funcionExiste @tabla (no se que tipo de dato seria), @campo
> (-), @valor (-) as
>
> declare @existe bit
> declare @cantidad tinyint
> select @cantidad = count(@campo) from @tabla where @campo =@valor
>
> if @cantidad>0
> set @existe=1
> else
> set @existe=0
>
> SELECT @existe
>
> GO
>
> solo quiero saber si es posible ...si lo es! me pueden simplemente orientar
> luego yo consigo hacerlo,
>
> TODOS LOS COMENTARIOS SON ACEPTADOS
>
> Saludos
>
> http://www.tecnolust.com
> a por las buenas ideas
Respuesta Responder a este mensaje
#8 Gustavo Larriera (MVP)
25/07/2008 - 16:14 | Informe spam
Pues simplemente defina usted una clave primaria en la tabla de productos,
intente hacer un INSERT y SQL Server le devolverá una excepción (de la cual
su aplicación puede recuperarse) indicando que está intentando violar la
restricción de clave primaria.

Eso le indica que la fila ya existe, no es necesario consultar primero por
la existencia de la fila.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"MalKaViAN_NeT" wrote:

Para saber por ejemplo si un producto esta registrado y no volverlo a
registrar.
http://www.tecnolust.com
a por las buenas ideas


"Gustavo Larriera (MVP)" wrote:

> Seré curioso: Para qué quiere usted hacer eso?
>
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "MalKaViAN_NeT" wrote:
>
> > tengo una funcion que uso siempre y me sirve para saber si el producto,
> > persona, usuario, etc. que se esta insertando existe ya en la base de datos
> > para asi no volverlo a registrar.
> >
> > se trata de un store procedure por tabla(producto, cliente,etc.) que me dice
> > si ese nuevo registro ya esta ingresado.
> >
> > me puse a pensar y Dije,, 'puedo ahorrar store procedures si pudiera
> > programas algo como esto':
> >
> > create procedure funcionExiste @tabla (no se que tipo de dato seria), @campo
> > (-), @valor (-) as
> >
> > declare @existe bit
> > declare @cantidad tinyint
> > select @cantidad = count(@campo) from @tabla where @campo =@valor
> >
> > if @cantidad>0
> > set @existe=1
> > else
> > set @existe=0
> >
> > SELECT @existe
> >
> > GO
> >
> > solo quiero saber si es posible ...si lo es! me pueden simplemente orientar
> > luego yo consigo hacerlo,
> >
> > TODOS LOS COMENTARIOS SON ACEPTADOS
> >
> > Saludos
> >
> > http://www.tecnolust.com
> > a por las buenas ideas
Respuesta Responder a este mensaje
#9 MalKaViAN_NeT
25/07/2008 - 17:25 | Informe spam
Mi problema es que esa excepción me tarda mucho en aparecer utilizando TRY
CATCH del .NET :S
http://www.tecnolust.com
a por las buenas ideas


"Gustavo Larriera (MVP)" wrote:

Pues simplemente defina usted una clave primaria en la tabla de productos,
intente hacer un INSERT y SQL Server le devolverá una excepción (de la cual
su aplicación puede recuperarse) indicando que está intentando violar la
restricción de clave primaria.

Eso le indica que la fila ya existe, no es necesario consultar primero por
la existencia de la fila.

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"MalKaViAN_NeT" wrote:

> Para saber por ejemplo si un producto esta registrado y no volverlo a
> registrar.
> http://www.tecnolust.com
> a por las buenas ideas
>
>
> "Gustavo Larriera (MVP)" wrote:
>
> > Seré curioso: Para qué quiere usted hacer eso?
> >
> >
> > Gustavo Larriera, Microsoft MVP
> > http://www.linkedin.com/in/gustavolarriera
> > Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
> >
> >
> >
> > "MalKaViAN_NeT" wrote:
> >
> > > tengo una funcion que uso siempre y me sirve para saber si el producto,
> > > persona, usuario, etc. que se esta insertando existe ya en la base de datos
> > > para asi no volverlo a registrar.
> > >
> > > se trata de un store procedure por tabla(producto, cliente,etc.) que me dice
> > > si ese nuevo registro ya esta ingresado.
> > >
> > > me puse a pensar y Dije,, 'puedo ahorrar store procedures si pudiera
> > > programas algo como esto':
> > >
> > > create procedure funcionExiste @tabla (no se que tipo de dato seria), @campo
> > > (-), @valor (-) as
> > >
> > > declare @existe bit
> > > declare @cantidad tinyint
> > > select @cantidad = count(@campo) from @tabla where @campo =@valor
> > >
> > > if @cantidad>0
> > > set @existe=1
> > > else
> > > set @existe=0
> > >
> > > SELECT @existe
> > >
> > > GO
> > >
> > > solo quiero saber si es posible ...si lo es! me pueden simplemente orientar
> > > luego yo consigo hacerlo,
> > >
> > > TODOS LOS COMENTARIOS SON ACEPTADOS
> > >
> > > Saludos
> > >
> > > http://www.tecnolust.com
> > > a por las buenas ideas
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida