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

Problemas con 2 sentencias.

Estas en el tema de Problemas con 2 sentencias. en el foro de SQL Server en Foros del Web. Hola, conosco muy poco sobre sql y actualmente tengo un problema respecto a 2 scrip para correrlos en mi base de datos. Postee esto en ...
  #1 (permalink)  
Antiguo 20/11/2007, 10:42
 
Fecha de Ingreso: noviembre-2007
Mensajes: 43
Antigüedad: 17 años
Puntos: 0
Exclamación Problemas con 2 sentencias.



Hola, conosco muy poco sobre sql y actualmente tengo un problema respecto a 2 scrip para correrlos en mi base de datos.

Postee esto en la seccion equivocada y por eso lo dejo nuevamente en esta seccion.

Estos scrip me detectan los caractereres que tienen ciertos codigos en su inv , me marcan el nombre de el caracter y el item que tiene esa parte de los codigos que seria itemSerial.




DECLARE @Acc varchar(10), @Inv BINARY(760), @ItemSerial BINARY(3), @Item BINARY(10), @cnt INTEGER
DECLARE LISTA CURSOR LOCAL FOR
SELECT Name FROM Character
OPEN LISTA
FETCH NEXT FROM LISTA INTO @Acc
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Inv = (SELECT Inventory FROM [Character] WHERE (Name=@Acc))
SET @cnt = 1
WHILE (@cnt <= (LEN(@Inv)/2))
BEGIN
SET @Item = SUBSTRING(@Inv,@cnt,10)
SET @ItemSerial = SUBSTRING(@Item,5,3)

IF (@ItemSerial = 0x000000)
BEGIN
print 'Yep! We got a 0x0 serial!'
print 'CharName: '+@Acc
print 'Item: '; print @Item
print '--------------------------'
END
SET @cnt = @cnt + 10
END
FETCH NEXT FROM LISTA INTO @Acc
END
CLOSE LISTA
DEALLOCATE LISTA


Lo que me gustaria saber es como puedo hacer para que si detecta esta @ItemSerial = 0x000000) me elimine a ese @Item = SUBSTRING(@Inv,@cnt,10

o si puedo hacerlo reemplazar por cualquier otro numero o serial que se yo 56821145 por ejemplo.

En este otro scrip tambien es similar el caso ya que necesitaria que si encuentra ese codigo elimine todo ese item.



DECLARE @Acc varchar(10), @Inv BINARY(1200), @ItemSerial BINARY(3), @Item BINARY(10), @cnt INTEGER
DECLARE LISTA CURSOR LOCAL FOR
SELECT AccountID FROM warehouse
OPEN LISTA
FETCH NEXT FROM LISTA INTO @Acc
WHILE @@FETCH_STATUS = 0
BEGIN
SET @Inv = (SELECT items FROM [warehouse] WHERE (AccountID=@Acc))
SET @cnt = 1
WHILE (@cnt <= (LEN(@Inv)/2))
BEGIN
SET @Item = SUBSTRING(@Inv,@cnt,10)
SET @ItemSerial = SUBSTRING(@Item,5,3)

IF (@ItemSerial = 0x000000)
BEGIN
print 'Yep! We got a 0x0 serial!'
print 'Account: '+@Acc
print 'Item: '; print @Item
print '--------------------------'
END
SET @cnt = @cnt + 10
END
FETCH NEXT FROM LISTA INTO @Acc
END
CLOSE LISTA
DEALLOCATE LISTA


Se que paresco un deshubicado al pedir tal ayuda pero realmente ignoro como puedo modificar este codigo y la poca ayuda que crean poder brindarme ustedes para mi seria enorme ya que estoy muy confundido.

Desde ya les agradesco.
  #2 (permalink)  
Antiguo 25/11/2007, 12:28
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años, 7 meses
Puntos: 25
Re: Problemas con 2 sentencias.

No acabo de entender por qué hicieron un cursor cuando en apariencia se puede hacer directamente:

SELECT *
FROM tabla
WHERE inventory LIKE '%' + Convert(Char(1), 0x000000) + '%'

Si eso funciona entonces el reemplazo del serial es algo como

UPDATE tabla
SET inventory = '123'
WHERE inventory LIKE '%' + Convert(Char(1), 0x000000) + '%'
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
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 22:16.