Pergunta
Luiz Henrique C... · Fev. 17

Como recuperar os dados de uma %Stream.GlobalCharacter

Boa Noite / Tarde / Dia

Estou tendo o trabalho para recuperar os dados (JSON) de campos de uma tabela no formato %Stream.GlobalCharacter, porem quando eu tento ler ele dentro do cache (ObjectScript) estou encontrando dificuldades. Estou recuperando as informações da tabela usando %SQL.Statement e quando eu tento acessar a informação geralmente vem: 2%Stream.GlobalCharacter^traducao.xYCONTIGENCIAWMSS

segue uma estrutura de como estou tentando recuperar esse dado:

Set tStatement = ##class(%SQL.Statement).%New()
 ;
 SQL = ""
 SQL = "SELECT CONT_JSONENVPEV,CONT_JSONENVAR,CONT_JSONENVROM FROM TRADUCAO.xYCONTIGENCIAWMS WHERE CONT_CODEMP = '"_CODEMP_"' AND CONT_CODCHAVE = '"_NUMKEY_"' AND CONT_TIPO = '"_TIPOCO_"'"
set status = tStatement.%Prepare(SQL)
set tResult = tStatement.%Execute()
 ;
tResult.%Next()
set stream = ##class(%Stream.GlobalCharacter).%New()
 
jsonPEV = "", jsonPEV = stream.Read(tResult.%GetData(1))
jsonAR = "", jsonAR  = stream.Read(tResult.%GetData(2))
jsonROM = "", jsonROM = stream.Read(tResult.%GetData(3))

Desde já agradeço qualquer ajuda ou orientação

 

Product version: Caché 2018.1
1
0 51
Discussão (3)1
Entre ou crie uma conta para continuar

Bom dia Luiz,

No código em que você vai fazer a leitura da Stream, você pode usar da seguinte forma:

set stream ##class(%Stream.GlobalCharacter).%Open(tResult.%GetData(1))

jsonPEV ""jsonPEV stream.Read()

O que retorna no SQL é o OID da Stream, que você precisa para abrir e recuperar o conteúdo da mesma.