如何检查sqlite中是否存在函数?

时间:2013-06-08 20:18:29

标签: c sqlite

我正在尝试在Sqlite之上构建一些抽象函数,它们可以选择最好的函数来调用。我在自定义函数实现(不是在sql)中执行此操作。

一个例子:使用可能类似于:SELECT username FROM Users WHERE id='blah' AND password = BEST_HASH('some string')。在这种情况下,我将实现best_hash,我希望它检查是否存在名为'sha1'或'bcrypt'的函数。当它找到最佳匹配时,请调用相应的函数。

我的实际案例需要从现有的一组函数中选择最好的函数(在程序之外没有任何意义,因此是不同的例子)。

作为一名程序员,我正在尝试制作一个通用案例来确定某个函数是否存在。我有一个特定版本,通过编译SELECT function_name(arg1, arg2, ...argN)语句来工作。我如何将其概括为不知道有多少参数可用?

2 个答案:

答案 0 :(得分:0)

我不知道sqlite是否支持information_schema,但是在执行的系统(例如postgres)中,您可以查询特定函数是否存在,如下所示:

select routine_name
from information_schema.routines
where routine_name = 'sha1';

答案 1 :(得分:0)

您可以从编译指示函数中进行选择,以查看SQLite中是否存在该函数。

 select exists(select 1 from pragma_function_list where name='sum');
 1