当前位置:网站首页>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
边栏推荐
- Preliminary practice of niuke.com (10)
- Stew in disorder
- Research Report on surgical otorhinolaryngology equipment industry - market status analysis and development prospect prediction
- Selenium element interaction
- Accounting regulations and professional ethics [9]
- What does IOT engineering learn and work for?
- Research Report on market supply and demand and strategy of tetramethylpyrazine industry in China
- Salient map drawing based on OpenCV
- MySQL learning notes - data type (2)
- Model fusion -- stacking principle and Implementation
猜你喜欢

AI system content recommendation issue 24

Common knowledge of unity Editor Extension

多年锤炼,迈向Kata 3.0 !走进开箱即用的安全容器体验之旅| 龙蜥技术

165 webmaster online toolbox website source code / hare online tool system v2.2.7 Chinese version

Understand asp Net core - Authentication Based on jwtbearer
![[hcie TAC] question 5 - 1](/img/e0/1b546de7628695ebed422ae57942e4.jpg)
[hcie TAC] question 5 - 1

MySQL learning notes - data type (2)

~89 deformation translation

How to decrypt worksheet protection password in Excel file
![[native JS] optimized text rotation effect](/img/50/3c09f223e821c14e7e9e0fb47622b6.jpg)
[native JS] optimized text rotation effect
随机推荐
How can floating point numbers be compared with 0?
Four point probe Industry Research Report - market status analysis and development prospect prediction
The 17 year growth route of Zhang Liang, an open source person, can only be adhered to if he loves it
Talking about Net core how to use efcore to inject multiple instances of a context annotation type for connecting to the master-slave database
Unity script introduction day01
Research Report on market supply and demand and strategy of surgical stapler industry in China
Big God explains open source buff gain strategy live broadcast
JS to realize the countdown function
Salient map drawing based on OpenCV
[Chongqing Guangdong education] National Open University spring 2019 1396 pharmaceutical administration and regulations (version) reference questions
Hair and fuzz interceptor Industry Research Report - market status analysis and development prospect forecast
Communication mode based on stm32f1 single chip microcomputer
~89 deformation translation
Understand asp Net core - Authentication Based on jwtbearer
Opencv learning -- geometric transformation of image processing
Book of night sky 53 "stone soup" of Apache open source community
Unity animation day05
Stress, anxiety or depression? Correct diagnosis and retreatment
What should ABAP do when it calls a third-party API and encounters garbled code?
Statistical learning: logistic regression and cross entropy loss (pytoch Implementation)