Ответ
User Defined Function (UDF) — это пользовательская функция, которую можно создать в SQL-запросе для выполнения специфических операций, не предусмотренных стандартными функциями. В Android UDF часто используются в Room для расширения возможностей SQLite.
Пример с Room:
@Dao
interface UserDao {
@Query("SELECT * FROM users WHERE isActive = :isActive")
fun getActiveUsers(isActive: Boolean = true): List<User>
@Query("SELECT calculateDiscount(price) FROM products") // UDF
fun getDiscountedPrices(): List<Double>
}
Для регистрации UDF в Room:
@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
companion object {
fun build(context: Context): AppDatabase {
return Room.databaseBuilder(...)
.addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
db.execSQL("CREATE FUNCTION calculateDiscount(price REAL) RETURNS REAL BEGIN RETURN price * 0.9; END;")
}
})
.build()
}
}
}