CREATE TABLE tab1(col1 INTEGER,col2 INTEGER)PRIMARY INDEX(COL1); INSERT INTO tab1 VALUES(1, 20); INSERT INTO tab1 VALUES(2, 30); INSERT INTO tab1 VALUES(3, 40); INSERT INTO tab1 VALUES(4, 50); SELECT * FROM TD_SYSGPL.ExecR ( on (select * from tab1) hash by col1 local order by col2 using contract('library(tdr); stream<-0; direction<-"R"; incols<-tdr.GetColDef(stream, direction); tdr.SetOutputColDef(stream,incols)') operator('library(tdr); stream<-0; direction<-"R"; direction1<-"W"; options<-0; inHandle<-tdr.Open(direction, stream, options); print(inHandle); outHandle<-tdr.Open(direction1, stream, options); print(outHandle); colcount <- tdr.GetColCount(stream , direction); colcount <- colcount -1 ; while(tdr.Read(inHandle)== 0) { for( index in 0:colcount ) { att <- tdr.GetAttributeByNdx( inHandle , index , NULL); tdr.SetAttributeByNdx(outHandle , index , att, NULL); }; tdr.Write(outHandle); }; tdr.Close(inHandle); tdr.Close(outHandle);') ) as d1;
結果:
col1 col2 ------------------- 1 20 4 50 2 30 3 40