Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Como se hace???

Estas en el tema de Como se hace??? en el foro de SQL Server en Foros del Web. Saludos Foro. Tengo el sig. SP Código: CREATE procedure spDelMarca @idMarca smallint, @Res_SP int output, @cmd nvarchar(4000) output AS set nocount on set @Res_SP=0 set ...
  #1 (permalink)  
Antiguo 13/06/2006, 09:57
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Pregunta Como se hace???

Saludos Foro.

Tengo el sig. SP


Código:
CREATE procedure spDelMarca
@idMarca smallint,
@Res_SP int output,
@cmd nvarchar(4000) output

 AS

set nocount on

set @Res_SP=0 

set @cmd = 'delete from marca where idmarca=@idmarca'
	IF @@Error = 0
		EXEC sp_executesql @cmd, N'@idmarca smallint', @idmarca =@idmarca
	else
		set @Res_SP=1
		Print 'Ocurrio un error en la transaccion'
GO
El problema es que a la hora de recuperar la variable de salida @cmd, me en ASP y meterla en una tabla regresa lo sig:

Cita:
delete from marca where idmarca=@idmarca
Es decir, me deberia regresar (en teoria) lo sig:

Cita:
delete from marca where idmarca=Samsung
si es que el usuario dio de baja la marca "Samsung"

Cabe mencionar que el DELETE si se ejecuta es decir da de baja la marca que el usuario escoge, pero al grabar la variable @cmd en otra tabla me hace lo mencionado arriba.

Gracias de antemano.
__________________
"La adulación es una moneda que empobrece al que la recibe"
  #2 (permalink)  
Antiguo 13/06/2006, 10:37
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola
Debes concatenar la variable con el string:
Cita:
set @cmd = "delete from marca where idmarca='"+@idmarca+"'; "
Aqui estoy tomando la concatenación con el simbolo "+", debes usar la concatenación que se usa Sql Server (si es que no es esa).
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #3 (permalink)  
Antiguo 13/06/2006, 10:48
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Pequeño Mauro:

Ya lo hice asi:

Cita:
set @cmd = 'delete from marca where idmarca="'+@idmarca+'"; '
y de muchas otras maneras y me da el sig. error:

Cita:
Syntax error converting the varchar value 'delete from marca where idmarca="' to a column of data type smallint.
__________________
"La adulación es una moneda que empobrece al que la recibe"
  #4 (permalink)  
Antiguo 13/06/2006, 10:58
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
Hola:
No me habia percatado del tipo de dato de la variable. Es un smallint, el error te sale por que estas concatenando un entero con una cadena.
Debes pasarlo o convertirlo a un tipo cadena para que pueda visualizarte el valor del campo y puedas concatenarlo. Me parece que eso hace la función STR o el CONVERT.
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #5 (permalink)  
Antiguo 13/06/2006, 11:04
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Esto lo haria en el SP o en el codigo ASP????

Por que a la hora de que el SP haga el DELETE va a buscar en la tabla marca un entero pequeño, es decir a poco no va a reventar por convertir el tipo de dato smallint a cadena a la hora de que realice el DELETE????
__________________
"La adulación es una moneda que empobrece al que la recibe"

Última edición por kire94; 13/06/2006 a las 11:12
  #6 (permalink)  
Antiguo 13/06/2006, 11:14
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años
Puntos: 3
En este caso en el SP, ya que lo que quieres es devolver la cadena con la sentencia.
Me parece que es:

Cita:
set @cmd = 'delete from marca where idmarca="'+CONVERT(char,@idmarca)+"'"; '
Si estoy equivocado que alguien me corrija. O sino haz la prueba compañero...
Saludos
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #7 (permalink)  
Antiguo 13/06/2006, 11:37
 
Fecha de Ingreso: enero-2006
Mensajes: 169
Antigüedad: 18 años, 3 meses
Puntos: 0
Perfecto.... Muchas gracias PequeñoMauro ya quedo, agradezco tu ayuda.
__________________
"La adulación es una moneda que empobrece al que la recibe"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:24.