Hola SBOneans...
por favor, dedica un tiempo y arroja algo de luz.
el 14 de noviembre hice una pregunta sobre la actualización de UDT, preguntando cómo y con qué valores actualizar los campos predeterminados 'Code' y 'Name' de UDT. Aunque no obtuve respuestas satisfactorias, a través de un poco de prueba y error encontré una solución alternativa para lo mismo.
pero ahora, estoy enfrentando problemas al intentar actualizar el UDT [dbo].[@BinStock] desde un bucle de búsqueda de cursor. A continuación se muestra la parte relevante de toda mi consulta.
/* inicio de la consulta */
eliminar [dbo].[@BinStock]
/* se crean muchos códigos que crean otras tablas temporales aquí */
CREATE TABLE #tStBin
(
Wh_code VARCHAR(8),
Item_code VARCHAR(18),
St_bin VARCHAR(8),
qty MONEY
)
/*
#mStBin creado solo con fines de prueba/depuración. No sé acerca del Tipo y Tamaño de los campos estándar del sistema 'Code' y 'Name' en el UDT [dbo].[@BinStock], pero, el resto de los campos son iguales que los definidos en el UDT [dbo].[@BinStock]
*/
CREATE TABLE #mStBin
(
code varchar(10),
name varchar(20),
Wh_code VARCHAR(8),
Item_code VARCHAR(18),
St_bin VARCHAR(8),
qty MONEY
/* #mStBin creado solo con fines de prueba/depuración */
DECLARE @tWhcode VARCHAR(8),
@tItemcode VARCHAR(18),
@tStbin VARCHAR(8),
@tqty MONEY,
@trecno int
/* se crean muchos códigos que llenan la tabla temporal #tStBin aquí */
DECLARE cur1 CURSOR FOR
select T0.Wh_code, T0.Item_code, T0.St_Bin, sum(T0.qty)
FROM #tStBin T0
group by T0.Wh_code, T0.Item_code, T0.St_Bin
OPEN cur1
FETCH NEXT FROM cur1 INTO @tWhcode, @tItemcode, @tstbin, @tqty
set @trecno = 0
WHILE (@@fetch_status = 0)
BEGIN
set @trecno = @trecno + 1
/* en el momento en que se introduce la siguiente declaración de inserción, el sistema arroja un error */
insert into [dbo].[@BinStock] (code, name, U_Wh_Code, U_Item_code, U_St_Bin, U_Qty_Bal)
values (@trecno, 'Rec#'+cast(@trecno as varchar(5)), @tWhCode, @tItemCode, @tStBin, @tqty)
/* en la declaración de inserción anterior, si [dbo].[@BinStock] se reemplaza por #mStBin, la consulta funciona sin problemas! */
FETCH NEXT FROM cur1 INTO @tWhcode, @tItemcode, @tstbin, @tqty
END
CLOSE cur1
DEALLOCATE cur1
drop table #tStBin, #mStBin
/* fin de la consulta */
aunque insertar registros en la tabla temporal #mStBin con la misma declaración de inserción no da problemas, intentar insertar registros en el UDT [dbo].[@BinStock] con esa declaración de inserción resulta en un error. pero, no conozco el error exacto, ya que el sistema muestra el mensaje de error anterior encontrado y corregido!
otro problema irritante son los mensajes de error que el sistema nos arroja, realmente son confusos y engañosos, y la mayor parte del tiempo parece mostrar el mensaje de error anterior en lugar del real!
¿hay algún problema al insertar/actualizar UDTs dentro de un cursor? ¿cómo podemos hacerlo?
por favor, dedica un tiempo y arroja algo de luz.
Gracias y Saludos,
Raghu Iyer