当前位置:网站首页>FIREBIRD使用经验总结
FIREBIRD使用经验总结
2022-07-04 14:54:00 【全栈程序员站长】
最近在改写一段ms sql的存储过程到firebird, 总结了一些经验, firebird可以说是这个世界上最小的又支持存储过程的数据库的, 才2.3M而已,如果做小型的应用,比ms sql桌面版也有70多M(+sp3), mysql也有20-30M,太不方便。
1.自定义函数问题.Access to UDF library “rfunc.dll” is denied by server administrator 花了很长时间,不明白为何,将rfunc.dll拷到udf目录,bin目录,windows\system32目录都不能解决问题,google一下,网上有同样的问题,但没有解决方案,结果我重装了一下firebird就解决了.
2.存储过程中变量的定义 ms sql存储过程中无论在哪都可以定义新的变量,但在firebird中,只能在as 与begin之间进行定义.firebird的变量不能用@符号,我将@全部变成a就好了.
3.存储过程中变量的使用 select @i=count(*) from table1 //ms sqlselect count(*) from table1 into :i//firebird引用变量使用冒号 4.嵌入式sql, firebird支持select * from table exists (select …) 或 select * from table in (select …) 但不支持select * from (select * from …) a, 我是将这类改写成视图解决的
5.case语句 mssql 可使用field= case (),但firebbird仅支持case () as field, 6.mssql getdate()变成CURRENT_DATE+CURRENT_TIME select * from snartleave where dt_starttime<CURRENT_DATE+CURRENT_TIME 或 select * from snartleave where dt_starttime<CURRENT_DATE||’ ‘ ||CURRENT_TIME
7.返回数据集的存储过程写法(firebird写法有点麻烦) CREATE PROCEDURE SPVARTST2 ( VAR_IPTARTNO CHAR(6))RETURNS ( VAR_ARTNAME CHAR(10))ASbeginfor select v_name1 from snart where v_artNo=:var_iptartno into :var_artname dosuspend;end
8.自动增长字段的使用(autoincrement) firebird有个发生器(generator)的东东,在发生器里记录值的增长, 再用触发器实现 beginif (new.i_seqno is null) thenbegin NEW.i_seqno = GEN_ID(GEN_T_DB_ARTSEQNO_ID,1);endend //GEN_T_DB_ARTSEQNO_ID就是创建的发生器,看到没有,也就是说不同的表不同的字段可以共用一个发生器,gen_id相当于identity,看起来比mssql复杂,其实也很简单。
9.发生器重置 mssql里自动增加的字段要重置好像很麻烦,较难控制, firebird可以这样(存储过程中) agenerator=Gen_ID(GEN_T_DB_ARTSEQNO_ID,Gen_ID(GEN_T_DB_ARTSEQNO_ID,0)*-1+1); //agenerator是一个整形变量,好像一定要装gen_id的值符给一个变量才行,不知道有没有更好的办法,不用定义一个多余的变量 可参考如下网址:http://www.fingerbird.de/generatorguide_body.htm
10 通过一个表更改另一个表的数据 mssql:update table1 set cname=b.cname from table1 a inner join table2 as b where a.id=b.id firebird:update table1 a set cname=(select cname from table 2 b where b where a.id=b.id) 11.如何选择前几条记录 mssql: select top 10 * from table1 firebird:select first 10 * from table1 IB:select * from table rows 10 12.Firebird存存储过程中的事务 在存储过程 ib/fb 不支持开事务或者结束事务。提交是由调用者提交的。也就是,fb/ib存储过程应该设计在一个事务里。 在sql server里,存储过程或以开这样的事务: begin trancstion commit trancstion 但在fb/ib里没有这样的事务 需要在调的程序中开事务 如: pFIBDtbsMain.StartTransaction; pFIBDtbsMain.Commit;
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/110912.html原文链接:https://javaforall.cn
边栏推荐
- China tall oil fatty acid market trend report, technical dynamic innovation and market forecast
- Redis: SDS source code analysis
- QT graphical view frame: element movement
- Common knowledge of unity Editor Extension
- Research Report on market supply and demand and strategy of China's four sided flat bag industry
- Intranet penetrating FRP: hidden communication tunnel technology
- 165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version
- Qt---error: ‘QObject‘ is an ambiguous base of ‘MyView‘
- Go deep into the details of deconstruction and assignment of several data types in JS
- DIY a low-cost multi-functional dot matrix clock!
猜你喜欢
Qt---error: ‘QObject‘ is an ambiguous base of ‘MyView‘
时钟轮在 RPC 中的应用
L1-072 scratch lottery
The 17 year growth route of Zhang Liang, an open source person, can only be adhered to if he loves it
Interface test - knowledge points and common interview questions
2022年九大CIO趨勢和優先事項
函數式接口,方法引用,Lambda實現的List集合排序小工具
Big God explains open source buff gain strategy live broadcast
Web components series - detailed slides
TypeError: list indices must be integers or slices, not str
随机推荐
[Chongqing Guangdong education] National Open University spring 2019 1396 pharmaceutical administration and regulations (version) reference questions
嵌入式软件架构设计-函数调用
[Previous line repeated 995 more times]RecursionError: maximum recursion depth exceeded
AutoCAD - set color
Statistical learning: logistic regression and cross entropy loss (pytoch Implementation)
Talking about Net core how to use efcore to inject multiple instances of a context annotation type for connecting to the master-slave database
函數式接口,方法引用,Lambda實現的List集合排序小工具
The content of the source code crawled by the crawler is inconsistent with that in the developer mode
. Net delay queue
L1-072 scratch lottery
Principle and general steps of SQL injection
%F format character
Preliminary practice of niuke.com (10)
[North Asia data recovery] a database data recovery case where the partition where the database is located is unrecognized due to the RAID disk failure of HP DL380 server
Research Report on market supply and demand and strategy of China's well completion equipment industry
Accounting regulations and professional ethics [10]
Working group and domain analysis of Intranet
Understand asp Net core - Authentication Based on jwtbearer
Some fields of the crawler that should be output in Chinese are output as none
Go deep into the details of deconstruction and assignment of several data types in JS