Я пытаюсь получить доступ к параметрам функции в операторе case в этой функции и отображаю данные / «отфильтрованные» на основе флага разрешения .. Возможно ли это?
Usecase: TypeCast значение на основе columnType и проверьте, есть ли у пользователя разрешение на просмотр столбца, на основе которого вы отображаете значение или говорите что-то вроде «отфильтровано»
Вот что я пробовал
функция rls_columnCheck
.create-or-alter function rls_columnCheck(tableName:string, columnName: string, value:string, columnType:string, IsInGroupPII:bool, IsInGroupFinance:bool) {
let PIIColumns = rls_getTablePermissions(tableName, "PII");
let FinanceColumns = rls_getTablePermissions(tableName, "Finance");
let val= case(columnType=="bool", tobool(value),
columnType=="datetime", todatetime(value),
columnType=="int", toint(value),
value);
iif(columnName in (PIIColumns),
iif(columnName in (FinanceColumns),
iif(IsInGroupPII == true and IsInGroupFinance == true,
val,
"filtered"), // PII True, Fin True
iif(IsInGroupPII == true,
val,
"filtered") // PII True, Fin False
),
iif(columnName in (FinanceColumns),
iif(IsInGroupFinance == true,
val,
"filtered"), // PII False, Fin True
val // PII False, Fin False
)
);
}
Ошибка:
Call to iff(): @then data type (int) must match the @else data type (string)