Skip to main content

%Library.Storage

Class %Library.Storage [ Abstract, Not ProcedureBlock, System = 2 ]

Physical Storage Base Class

Parameters

SQLENABLED

Parameter SQLENABLED = 1;

STORAGECOMPILERCLASS

Parameter STORAGECOMPILERCLASS = "%Compiler.Storage.Common";

STORAGEINTERFACE

Parameter STORAGEINTERFACE As STRING [ Constraint = ",persistent,serial", Flags = ENUM ];

STORAGEINTERFACE defines the type of serialization implemented by this class. The value has to match the classtype of the class that is inheriting the serialization interface.

IDTYPE;

Parameter IDTYPE;

Methods

%BuildIndices

ClassMethod %BuildIndices(pIndexList As %RawString = "", pAutoPurge As %Integer = 1, pLockFlag As %Integer = 0, pJournalFlag As %Integer = "", pStartID As %RawString = "", pEndID As %RawString = "", pIgnoreIndexList As %RawString = "") As %Status [ ProcedureBlock = 1, ServerOnly = 0 ]

Builds entries for each index specified in the idxlist argument. If pIndexList is empty then all indices that originate in the class are rebuilt. If no indexes are specified in pIndexList or there are other bitmap indexes specified in pIndexList and there is a bitmap extent index defined for the class and there are currently no entries in the bitmap extent index then it will be implicitly included in pIndexList. If there is an ID range specified in pStartID-pEndID and there are either no indexes specified in pIndexList or if indexes are specified then at least one of them is a bitmap index then the bitmap extent index will be implicitly included in pIndexList. If the bitmap extent index is included then the bitmap extent index for each subextent is also built.

If pAutoPurge is true then the indices contained in pIndexList will be purged before they are built as long as no range is specified, if a range is specified we will skip any purge. The default is TRUE (1).

If pLockFlag is one (1) then an extent lock will be acquired before the indices are built. If the lock cannot be acquired then an error is returned. The lock is released after the index build is completed. If it is two (2) then a lock is acquired prior to filing indexes for that instance and it is released as soon the indexes for that instance are filed. If it is zero (0) then no locks are used while filing the indexes. If it is three (3) then it an shared extent lock will be acquired before the indices are build.

If pJournalFlag is false then journaling is disabled for the processes used to build the indexes. If this flag is true then the journaling is enabled for the process used to build the indicies. The default value of this argument is "" meaning use the current process setting.

pStartID and pEndID define a range of IDs for which indexes will be built. The range is inclusive. If the starting ID is not passed a non-null value then the range begins at the first ID defined in the extent. If the ending ID is not passed a non-null value then the range ends at the last ID defined in the extent.

If pIgnoreIndexList is defined, it should be a $listbuild of index names that should not be built. This argument allows you to build all indices except those defined in pIgnoreIndexList. The default value of this argument is "", which means all indices, or all indices specified in pIndexList, will be built.

If %OnBeforeBuildIndices is implemented and is runnable then it will be called just prior to purging and building any index structures. Refer to %OnBeforeBuildIndices for more information.

If %OnAfterBuildIndices is implemented and is runnable then it will be called after all index structures have been built completely. Refer to %OnAfterBuildIndices for more information.

Returns a %Status value indicating success or failure. This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL.

If your index is corrupt running this function will not fix the corruption unless you rebuild the entire index and purge the existing indexes. If you have inserted some new items but have deferred building the index for these new items then you can run %BuildIndices on this range oif IDs to add the index entries for these new items.

%DeleteData

ClassMethod %DeleteData(id As %String, concurrency As %Integer) As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]

This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL. Persistent classes using some other storage class, such as %Library.CustomStorage must override this method.

%InitExtentData

ClassMethod %InitExtentData() As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]

%InitExtentData() - Initializes extent data in storage. This method is implemented by the storage class. It simply sets the root node of the data global to ""

%KillExtentData

ClassMethod %KillExtentData(killstreams As %Boolean = 0, reinitialize As %Boolean = 0) As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]

%KillExtentData() - kills extent data in storage. This method is implemented by the storage class. If killstreams is true (default is false) it will also kill the default stream storage global. If reinitialize is true (default is false) it will also call %InitExtent to re-define the globals.

%LoadData

Method %LoadData(id As %String) As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]

%LoadData() - loads an object from storage. This method is implemented by the storage class.

%PurgeIndices

ClassMethod %PurgeIndices(idxlist As %List = "", lockExtent As %Boolean = 0, pIgnoreIndexList As %RawString = "") As %Status [ ProcedureBlock = 1, ServerOnly = 1 ]

Deletes all entries from each index specified in the idxlist argument. If idxlist is empty then all indices that originate in the class are purged. The index definition remains intact.

If pIgnoreIndexList is defined, it should be a $listbuild of index names that should not be purged. This argument allows you to purge all indices except those defined in pIgnoreIndexList. The default value of this argument is "", which means all indices, or all indices specified in pIndexList, will be purged.

Returns a %Status value indicating success or failure. This method is normally generated by the storage class for persistent classes using %Storage.Persistent or %Storage.SQL. Persistent classes using some other storage class, such as %Library.CustomStorage must override this method.

%ValidateIndices

ClassMethod %ValidateIndices(idxList As %List = "", autoCorrect As %Boolean = 0, lockOption As %Integer = 1, multiProcess As %Boolean = 1, ByRef mapList As %String, verbose As %Boolean = 1, ByRef errors As %String) As %Status [ ProcedureBlock = 0, ServerOnly = 1 ]

%ValidateIndices() - Validates indices for a class

Parameters:

idxList Optional. "" to check all indices, or specify a $list of index names to check. Default="" autoCorrect Optional. If true, correct any errors found. Default=0 lockOption Optional. Default = 1 0 - No locking is performed at all 1 - Shared locking as each row is checked 2 - exclusive lock on entire table for duration of the run multiProcess Optional. If true, parts of %ValidateIndices will use parallel processing when possible. Default=1 verbose Optional. If true, display output to the current device. Default=1 errors Optional. Passed by reference. Returns an array of errors found in the index(es) validated. If autoCorrect=1, this is an array of issues corrected.

Returns:

Status Code

Example:

  • Do $SYSTEM.OBJ.ValidateIndices("Sample.Person","",1,2)
  • Do $SYSTEM.OBJ.ValidateIndices("Sample.Company",$lb("NameIdx"),1,1)

Note::
Indices may also be validated by calling the class method $SYSTEM.OBJ.ValidateIndices(classname,idxList,autoCorrect,lockOption).
There is one main difference between validating indices through $SYSTEM.OBJ.ValidateIndices() and ##class(classname).%ValidateIndices().
$SYSTEM.OBJ.ValidateIndices() will validate the indices for a table, and it will also validate any indices in collection child tables for that table.
When using ##class(classname).%ValidateIndices(), collection child table indices must be checked with separate calls.
Also, when calling $SYSTEM.OBJ.ValidateIndices(), multiProcess default is 0. When calling ##class(classname).%ValidateIndices(), multiProcess default is 1.

%ValidateTable

ClassMethod %ValidateTable(lockOption As %Integer = 1, multiProcess As %Boolean = 1, verbose As %Boolean = 1, ByRef errors As %String) As %Status [ ProcedureBlock = 0, ServerOnly = 1 ]

%ValidateTable() - Validates a table's data

Parameters:

lockOption Optional. Default = 1 0 - No locking is performed at all 1 - Shared locking as each row is checked 2 - exclusive lock on entire table for duration of the run multiProcess Optional. If true, parts of %ValidateIndices will use parallel processing when possible. Default=1 verbose Optional. If true, display output to the current device. Default=1 errors Optional. Passed by reference. Returns an array of errors found in the index(es) validated. If autoCorrect=1, this is an array of issues corrected.

Returns:

Status Code

Example:

  • Do $SYSTEM.OBJ.ValidateTable("Sample.Person",1,2)
  • Do $SYSTEM.OBJ.ValidateTable("Sample.Company",1,1)

%SaveData

Method %SaveData(id As %String) As %Status [ Private, ProcedureBlock = 1, ServerOnly = 1 ]

%SaveData() - saves an object to disk, checks uniqueness and referential integrity constraints, and maintains index structures. This method is implemented by the storage class.

%SQLDelete

ClassMethod %SQLDelete(%rowid, %check, %tstart = 1, %mv = 0, %polymorphic = 0, %bufferedColumns = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

This class just holds stub methods that will be injected into the class definition by the table compiler. No implementation details here.

%SQLDeleteBufferedColumns

ClassMethod %SQLDeleteBufferedColumns(ByRef %bufferedColumns As %Status) As %String [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLFastInsert

ClassMethod %SQLFastInsert(%check As %Binary) As %String [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLInsert

ClassMethod %SQLInsert(ByRef %d As %String, %check As %Binary, %inssel, %vco, %tstart = 1, %mv = 0, %bufferedColumns = 0) As %String [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLInsertBufferedColumns

ClassMethod %SQLInsertBufferedColumns(ByRef %bufferedColumns As %Status) As %String [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUpdate

ClassMethod %SQLUpdate(%rowid As %String, %check As %Binary, ByRef %d, %vco, %tstart = 1, %mv = 0, %polymorphic = 0, ByRef %soid As %String, ByRef %bufferedColumns As %String = 0, ByRef %bufferedColumnsDel As %String = 0) As %String [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLAfterTriggers

ClassMethod %SQLAfterTriggers() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLAcquireLock

ClassMethod %SQLAcquireLock(%rowid As %String, s As %Boolean = 0, ByRef unlockref As %String = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLAcquireTableLock

ClassMethod %SQLAcquireTableLock(s As %Boolean = 0, ByRef SQLCODE As %Integer, to As %Integer = "") [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLBeforeTriggers

ClassMethod %SQLBeforeTriggers() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLBuildIndices

ClassMethod %SQLBuildIndices(pIndices As %List = "", pLockFlag As %Integer = 0, pStartID As %RawString = "", pEndID As %RawString = "", pIgnoreIndexList As %RawString = "", pKeepSelectability As %Integer = 0) As %Status [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLBuildPurgeIndexForRow

ClassMethod %SQLBuildPurgeIndexForRow(pIndices As %List = "", pActions As %RawString = "BP", pLockRow As %Integer = 1, ByRef %d As %RawString, ByRef %e As %RawString, pIgnoreIndexList As %RawString = "") As %Status [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLBuildPurgeIndexForRow - given a list of indices (or all by default), an ID, and new and old values, purge and build the index entries for the row pIndices - $listbuild of index map names to purge/build. Default is "" and means purge/build all indices pActions - A string of action characters to perform. If pActions["P", the old index entries will be Purged/Deleted. If pActions["B", the new index entries will be Built/Defined. The default is pActions="BP". This can be overridden to provide a way to just Purge a row's index entries (delete) or to define a row's index entries (Insert). Any other characters in pActions besides "B" or "P" are ignored. pLockRow - 1/0 flag, default=1, 1 means acquire an exclusive, long-term lock on the row. 0 means no lock is acquired. %d() - Array subscripted by SqlColumnNumber which holds new values for indexed entries to be built %e() - Array subscripted by SqlColumnNumber which holds old values for indexed entries to be purged pIgnoreIndexList - $listbuild of index map names to not purge/build. Can be used in conjuction with pIndices to purge/build all indices except thise list. Default is "".

%SQLBuildPurgeIndices

ClassMethod %SQLBuildPurgeIndices(pIndices As %List = "", pBuild As %Boolean, pLockFlag As %Integer = 0, pStartID As %RawString = "", pEndID As %RawString = "", pIgnoreIndexList As %RawString = "") As %Status [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCheckUnique

ClassMethod %SQLCheckUnique(pFromOrig As %Boolean = 0, %pID As %String, %pVals... As %String) As %Status [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCheckUniqueKeys

ClassMethod %SQLCheckUniqueKeys(pConNumber As %Integer, pFromOrig As %Boolean = 0, pUpdate As %Boolean = 0, pVals... As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCheckUniqueIndices

ClassMethod %SQLCheckUniqueIndices(pIndices As %List, ByRef pOK As %Boolean) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCopyIcolIntoName

ClassMethod %SQLCopyIcolIntoName() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCopyNameIntoIcol

ClassMethod %SQLCopyNameIntoIcol() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLCreateInsDelTables

ClassMethod %SQLCreateInsDelTables(ByRef pInsTrigObj As %String, ByRef pDelTrigObj As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLDefineiDjVars

ClassMethod %SQLDefineiDjVars(ByRef %d As %String, ByRef subs As %String, master As %Boolean) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLDeleteChildren

ClassMethod %SQLDeleteChildren(%parent As %String, %check As %String, ByRef sqlcode As %Integer) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLDeleteTempStreams

ClassMethod %SQLDeleteTempStreams() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLExists

ClassMethod %SQLExists(pLockOnly As %Boolean = 0, ByRef pUnlockRef As %String, %pVal... As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLEExit

ClassMethod %SQLEExit() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLFieldValidate

ClassMethod %SQLFieldValidate() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLFKeyDelLock

ClassMethod %SQLFKeyDelLock() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLGetLock

ClassMethod %SQLGetLock(pRowId As %String, pShared As %Boolean = 0, ByRef pUnlockRef As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLGetOld

ClassMethod %SQLGetOld(%rowid As %String, ByRef %d As %String, ByRef %e As %String, ByRef sqlcode As %Integer) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLGetOldAll

ClassMethod %SQLGetOldAll() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLGetOldIndex

ClassMethod %SQLGetOldIndex(%rowid As %String, ByRef %e As %String, ByRef pF As %String = 0, ByRef sqlcode As %Integer, ByRef %buffervector As %String = 0, fld As %Integer = "") [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLicompView

ClassMethod %SQLicompView() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLInsertComputes

ClassMethod %SQLInsertComputes(view As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLInsertStreams

ClassMethod %SQLInsertStreams(pVal As %String, pClassname As %String, pProperty As %String, pField As %String, pChangeEmptyToNull As %Boolean, pOIDType As %Boolean, ByRef sqlcode As %Integer, ByRef %msg As %String) [ Internal, ProcedureBlock = 1, ServerOnly = 1 ]

%SQLInvalid

ClassMethod %SQLInvalid(pIcol As %Integer, pVal As %String) As %Integer [ Internal, ProcedureBlock = 1, ServerOnly = 1 ]

%SQLInvalid2

ClassMethod %SQLInvalid2(ficol As %Integer, val As %String, char As %String) [ Internal, ProcedureBlock = 1, PublicList = sqlcode, ServerOnly = 1 ]

%SQLMissing

ClassMethod %SQLMissing(fname As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVDelete

ClassMethod %SQLMVDelete(oref As %Binary, flags As %String, %rowid As %String, oldrec As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVIndexDelete

ClassMethod %SQLMVIndexDelete(ByRef %e As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVIndexInsert

ClassMethod %SQLMVIndexInsert(ByRef %d As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVIndexUpdate

ClassMethod %SQLMVIndexUpdate(ByRef %d As %String, ByRef %e As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVInsert

ClassMethod %SQLMVInsert(oref As %Binary, flags As %String, %rowid As %String, newrec As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLMVUpdate

ClassMethod %SQLMVUpdate(oref As %Binary, flags As %String, %rowid As %String, newrec As %String, oldrec As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLnBuild

ClassMethod %SQLnBuild() [ Internal, ProcedureBlock = 1, ServerOnly = 1 ]

%SQLNormalizeCompFields

ClassMethod %SQLNormalizeCompFields() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLNormalizeFields

ClassMethod %SQLNormalizeFields() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLPurgeIndices

ClassMethod %SQLPurgeIndices(pIndices As %List = "", pLockExtent As %Boolean = 0, pIgnoreIndexList As %RawString = "") [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickBulkInsert

ClassMethod %SQLQuickBulkInsert(%nolock As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickBulkLoad

ClassMethod %SQLQuickBulkLoad(%rowidlist As %List, %nolock As %Boolean = 0, pkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickBulkSave

ClassMethod %SQLQuickBulkSave(%nolock As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickBulkUpdate

ClassMethod %SQLQuickBulkUpdate(%nolock As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickDelete

ClassMethod %SQLQuickDelete(%rowid As %String, %nolock As %Boolean = 0, pkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickDeleteChildren

ClassMethod %SQLQuickDeleteChildren(%parent As %String, %nolock As %Boolean = 0, pkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickFindPKeyByRowID

ClassMethod %SQLQuickFindPKeyByRowID(%rowid As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickFindRowIDByPKey

ClassMethod %SQLQuickFindRowIDByPKey(pPKey As %String, pOutput As %Boolean = 1, pInternal As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickInsert

ClassMethod %SQLQuickInsert(ByRef d As %String, %nolock As %Boolean = 0, pkey As %Boolean = 0, parentpkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickLoad

ClassMethod %SQLQuickLoad(%rowid As %List, %nolock As %Boolean = 0, pkey As %Boolean = 0, qq As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickLoadChildren

ClassMethod %SQLQuickLoadChildren(%parref As %List, %nolock As %Boolean = 0, pkey As %Boolean = 0, returnpkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickLogicalToOdbc

ClassMethod %SQLQuickLogicalToOdbc(ByRef %d As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickOdbcToLogical

ClassMethod %SQLQuickOdbcToLogical(ByRef %d As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLQuickUpdate

ClassMethod %SQLQuickUpdate(%rowid As %String, ByRef d As %String, %nolock As %Boolean = 0, pkey As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLReleaseLock

ClassMethod %SQLReleaseLock(%rowid As %String, s As %Boolean = 0, i As %Boolean = 0, e As %Boolean = "") [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLReleaseTableLock

ClassMethod %SQLReleaseTableLock(s As %Boolean = 0, i As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLStorageValidation

ClassMethod %SQLStorageValidation() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLTrigDelTab

ClassMethod %SQLTrigDelTab() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLTrigInsTab

ClassMethod %SQLTrigInsTab() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUnlockError

ClassMethod %SQLUnlockError(cname As %String) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUnlock

ClassMethod %SQLUnlock() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUnlock2

ClassMethod %SQLUnlock2() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUnlockRef

ClassMethod %SQLUnlockRef() [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUpdateComputes

ClassMethod %SQLUpdateComputes(view As %Boolean = 0) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLUpdateStreams

ClassMethod %SQLUpdateStreams(pNew As %String, pOld As %String, pClassname As %String, pProperty As %String, pField As %String, pChangeEmptyToNull As %Boolean, pOIDType As %Boolean, ByRef sqlcode As %Integer, ByRef %msg As %String, pAllowOid As %Boolean = 0) [ Internal, ProcedureBlock = 1, ServerOnly = 1 ]

%SQLValidateCompFields

ClassMethod %SQLValidateCompFields(ByRef sqlcode As %Integer) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]

%SQLValidateFields

ClassMethod %SQLValidateFields(ByRef sqlcode As %Integer) [ Internal, ProcedureBlock = 0, ServerOnly = 1 ]