@@ -244,21 +244,26 @@ class SASRunner{
244244 Write-Host "${ LineCodes . ResultsFetchedCode } "
245245 }
246246
247- [void]GetDatasetRecords([string]$tableName , [int]$start = 0, [int]$limit = 100, [string]$sortCriteria = "") {
247+ [void]GetDatasetRecords([string]$library, [string]$table , [int]$start = 0, [int]$limit = 100, [string]$sortCriteria = "") {
248248 $objRecordSet = New-Object -comobject ADODB.Recordset
249249 $objRecordSet.ActiveConnection = $this.dataConnection # This is needed to set the properties for sas formats.
250250 $objRecordSet.Properties.Item("SAS Formats").Value = "_ALL_"
251251
252- $query = "SELECT * FROM $tableName"
252+ $tableName = $library + "." + $table
253253 if ($sortCriteria -ne "") {
254- $query = $query + " ORDER BY " + $sortCriteria
254+ $epoch = [datetime]::FromFileTimeUtc(0)
255+ $currentUtcTime = (Get-Date).ToUniversalTime()
256+ $ts = [int64]($currentUtcTime - $epoch).TotalSeconds
257+ $tableName = "WORK.temp_$ts"
258+ $this.dataConnection.Execute("CREATE VIEW $tableName AS SELECT * FROM $library.$table ORDER BY $sortCriteria")
255259 }
260+
256261 $objRecordSet.Open(
257- $query ,
258- $this.dataConnection , # Use the active connection
259- 3 , # adOpenStatic
262+ $tableName ,
263+ [System.Reflection.Missing]::Value , # Use the active connection
264+ 2 , # adOpenDynamic
260265 1, # adLockReadOnly
261- 1 # adCmdText
266+ 512 # adCmdTableDirect
262267 )
263268
264269 $records = [List[List[object]]]::new()
@@ -270,7 +275,6 @@ class SASRunner{
270275 }
271276
272277 $objRecordSet.AbsolutePosition = $start + 1
273-
274278 for ($j = 0; $j -lt $limit -and $objRecordSet.EOF -eq $False; $j++) {
275279 $cell = [List[object]]::new()
276280 for ($i = 0; $i -lt $fields; $i++) {
@@ -292,10 +296,14 @@ class SASRunner{
292296 $result | Add-Member -MemberType NoteProperty -Name "rows" -Value $records
293297 $result | Add-Member -MemberType NoteProperty -Name "count" -Value $count
294298
299+ if ($sortCriteria -ne "") {
300+ $this.dataConnection.Execute("DROP VIEW $tableName")
301+ }
302+
295303 Write-Host $(ConvertTo-Json -Depth 10 -InputObject $result -Compress)
296304 }
297305
298- [void]GetColumns ([string]$libname, [string]$memname) {
306+ [object[]] GetColumnData ([string]$libname, [string]$memname) {
299307 $objRecordSet = New-Object -comobject ADODB.Recordset
300308 $objRecordSet.ActiveConnection = $this.dataConnection
301309 $query = @"
@@ -330,6 +338,12 @@ class SASRunner{
330338 $parsedRows += $parsedRow
331339 }
332340
341+ return $parsedRows
342+ }
343+
344+ [void]GetColumns([string]$libname, [string]$memname) {
345+ $parsedRows = $this.GetColumnData($libname, $memname)
346+
333347 Write-Host $(ConvertTo-Json -Depth 10 -InputObject $parsedRows -Compress)
334348 }
335349
0 commit comments