【发布时间】:2021-01-02 14:01:49
【问题描述】:
我有一个复杂的查询,我想在我的 android Room 数据库查询中使用过程。 android Room 数据库可以吗?
sql 中的示例:
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
@Query(SELECT * FROM PROCEDURE p LEFT JOIN OTHER_TABLE ot on p.id = ot.id)
fun getMyData(): LiveData<List<ResultModel>>
我想将以下查询定义为视图理想情况下 :myId 是可变的:
SELECT j.* FROM ChatItemView j
INNER JOIN (SELECT groupId,
CASE
WHEN (senderId = :myId) THEN receiverId
WHEN (senderId != :myId) THEN senderId
END as chat_item_id,
MAX(messageTime) as max_sent_time
FROM ViewChatItem j
GROUP BY j.groupId, CASE
WHEN j.groupId=0 THEN chat_item_id END) j_max
ON (((CASE
WHEN j.senderId = :myId THEN j.receiverId = chat_item_id
WHEN j.senderId != :myId THEN j_max.chat_item_id END)
AND j.groupId = 0) OR (j.groupId = j_max.groupId))
AND j.messageTime = j_max.max_sent_time
ORDER BY messageTime DESC
【问题讨论】:
-
您使用哪个数据库?是 SQLite 吗?
-
@forpas 这是对的 android
Room库是基于 SQLite 数据库的 -
SQLite 中没有过程。您可以创建视图。
-
@forpas 我实际上需要将一些参数传递给过程查询,我无法将参数传递给视图。我可以写一个大查询,但我很难理解它。我想把它分解,因为我需要传递变量,所以视图对我没有帮助。
-
您可以在 SELECT 语句的 WHERE 子句中将参数传递给视图。您必须发布示例数据和预期结果以阐明您想要什么。
标签: android kotlin android-sqlite android-room procedure