captura del retorno de la funcion readtext SYBASE

santiago tomas
02 de Mayo del 2006
El problema que tengo es que no soy capaz de introducir en una variable tipo char la devolución del comando readtext.

Los pasos que realizo son los suguientes, suponiendo una versión de sybase 11

1º) Como las variables locales no pueden ser tipo text, y tengo que tratar cadenas de más de 255 caracteres, me defino una tabla con un campo tipo de dato text e inserto el registro

create

table tempdb..TABLA_PRUEBA (cadena text null)
insert tempdb..TABLA_PRUEBA values ( \'"294944","95354354","986666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666643432","5555555555555555566666666666666666666666666666666666666666666666666666666666666666666666666666666666666666655555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555"\' )

2º) apunto con un puntero a la columna cadena de la tabla que acabo de definir y leo el resultado aplicando la funcion readtext


set textsize 533
select @@textsize
declare @cadena_text varbinary(16)
select @cadena_text = textptr(cadena) from tempdb..TABLA_PRUEBA
readtext tempdb..TABLA_PRUEBA.cadena @cadena_text 410 10 using chars

Esto me lo carga bien, pero necesito cargar en una variable tipo char lo que devuelve la funcion readtext. Segun pone enla documentación si que se puede, pero no lo consigo, al ejecutar la siguiente query da un error:

number 156, Incorrect syntaxis near the kewywoerd \'readtext\'

number 102, Incorrect syntaxis near \')\'


select convert(char(39), readtext tempdb..TABLA_PRUEBA.cadena @cadena_text 410 10 using chars)

Sabe alguien como puedo realizar esto?

Muchas gracias

iskary
02 de Mayo del 2006
Hey que tal, Me gustaria saber si ya pudiste resolver tu problema pues a mi me sucede exactamente lo mismo solo que en SQL Server 2000, en su momento como pude resolver esto fue insertando el resultado de un stored procedure en un tabla; algo asi como esto:

create proc ReadText_storedProcedures (
@ptrval binary(16),
@offset int,
@sizeOffset int
)
as
begin
READTEXT DBO.table_name.column_name @ptrval,@offset,@sizeoffset

end

al ejecutar este stored procedure te regresa exactemente lo mismo que si ejecutas el READTEXT y sus parametros y el resultado de esa ejecucion la puedes insertar en una tabla exepto que sea una variable tipo tabla, algo asi:

insert into table_name
EXECUTE ReadText_storedProcedures @ptrVal,@offset, @sizeoffset

La sintaxis y ejecuccion de SQL y SYBASE se parecen y espero esto te sirva despues de que tienes una tabla con ese registro ya lo puedes manipular como tu gustes.
Lo que si me gustaria saber es si encontraste alguna manera de asignar el resultado de la ejecución READTEXT a una variable porque ahora si necesito hacerlo de esa forma.

salu2
Israel Camacho
[email protected]