31
A
回答
37
SQLite没有存储的函数/存储过程语言。所以CREATE FUNCTION
不起作用。你可以做的是从c库到SQL函数(用户定义函数)的映射函数。要做到这一点,使用SQLite的C API(参见:http://www.sqlite.org/c3ref/create_function.html)
如果你不使用C API,你的封装API可以定义的东西,可以让你访问该功能,例如参见:
- PHP
sqlite_create_function()
(http://www.php.net/manual/en/function.sqlite-create-function.php) - 的Python
sqlite3.create_function()
(http://docs.python.org/2/library/sqlite3.html#sqlite3.Connection.create_function) - 的Perl
$dbh->func(_$name,_$argc,_$func_ref,_"create_function")
(https://metacpan.org/pod/DBD::SQLite#dbh-sqlite_create_function-name-argc-code_ref)
0
这可能对很多人有用:在SQLiteStudio可以通过一个SQL内置插件轻松地定义新的函数和排序规则。
https://github.com/pawelsalawa/sqlitestudio/wiki/Official_plugins#sql-built-in
通过函数编辑器。
@Andrew:由于您提到了MSSQL,您可能有兴趣知道使用.NET的System.Data.SQLite提供程序很容易在任何CLR语言中实现SQLite UDF。 http://sqlite.phxsoftware.com/ – Tim 2011-09-16 15:44:15
如果你像这个答案中提到的那样映射一个用户定义的函数,它是否保留在sqlite数据库中,或者每次加载数据库时都必须映射它吗? – ThinkBonobo 2014-02-06 15:21:13
好问题。我想你可能不得不重新映射。 – 2014-02-15 15:56:48