¿Obtener el valor de la propiedad de la instancia u obtener el valor de la columna del registro?

¡Hola chicos!

Como saben, hay dos (al menos) formas de obtener el valor almacenado de una propiedad de una clase InterSystems IRIS si se conoce el ID de una instancia (o un registro).

1. Obtenerlo mediante la propiedad de una instancia con "Acceso a objetos":

 ClassMethod GetPropertyForID(stId As %Integer) As %String

{

set obj=..%OpenId(stId)

return obj.StringData

} +++ ++ 
 

2. Obtenerlo mediante una columna del registro con "acceso SQL":

 ClassMethod GetColumnForID(stId As %Integer) As %String

{

&sql(select StringData into :sd from Ideal.StoredData where id = :stId)

return sd

} 
 
 

¿Qué prefieren?

¿Y por qué?

Para reproducir el escenario y jugar con él, en InterSystems IRIS 2019.2 pueden usar el repositorio de ObjectScript .
Contiene la clase persistente Ideal.StoredData con una propiedad StringData y una simple utilidad para poblar los registros.

Para configurar el escenario en su equipo, hagan lo siguiente (por ejemplo, en mac, suponiendo que tengan instalado git y docker):

# clone git@github.com:evshvarov/objectscript.git

# docker-compose build

# docker-compose up -d

# docker-compose exec iris iris session iris

USER>zn "OSCRIPT"

OSCRIPT>d ##class(Ideal.StoredData).AddRecords()       

OSCRIPT>w ##class(Ideal.StoredData).GetPropertyForID(1)
Value1
OSCRIPT>w ##class(Ideal.StoredData).GetColumnForID(1)  
Value1
OSCRIPT>

 

  • 0
  • 0
  • 25
  • 1
  • 0

Comentarios

Hola,

Si conoces el ID para mi es siempre mejor usar el acceso a objetos.

Pero si no conoces el ID y buscas a través de una SQL posiblemente la única opción viable es la segunda, aunque siempre puedes acceder directamente a los globals.

Saludos