如何判断现有Firebird RDBMS服务器安装(即Classic Server或Super-Server)上安装/配置/运行的架构?
如何在两种模式之间切换?
Firebird的哪些版本(1.5,2.0,2.1)和架构(CS或SS)可用于多处理器服务器?以及如何为多处理器服务器和多线程应用程序正确配置它们?
我在其中一个表单上有一个TIBquery对象,执行繁重的查询,表单冻结了一段时间.
我有一张桌子:
ID | Name | TDate
1 | John | 1 May 2013, 8:67AM
2 | Jack | 2 May 2013, 6:43AM
3 | Adam | 3 May 2013, 9:53AM
4 | Max | 4 May 2013, 2:13AM
5 | Leny | 5 May 2013, 5:33AM
Run Code Online (Sandbox Code Playgroud)
我需要一个返回所有TDate周末项目的查询.我该怎么写这样的查询?
我有多远
select
table.*,
EXTRACT (DAY FROM table.tdate )
from table
Run Code Online (Sandbox Code Playgroud)
我使用EXTRACT做了一个选择,看看我是否能得到正确的值.但是,使用参数DAY的EXTRACT返回月份的日期.如果我改为使用WEEKDAY,根据这里的文档,那么我得到错误:
ERROR: timestamp units "weekday" not recognized
SQL state: 22023
Run Code Online (Sandbox Code Playgroud)
限制1250
EDIT TDate具有日期时间(时间戳)的数据类型.我只是为了方便阅读而写的.但无论何种类型,如果需要,我都可以轻松地在类型之间进行转换.
我知道约会4月5日和5月是周末(因为他们是周六和周日).firebird是否允许一种编写查询的方法,如果它们在周末出现,它们将返回日期.
我试过,但所有时间都失败了在firebird数据库中显示和设置用户权限.我用了 ;
GSEC>显示
但它只显示用户名.我希望看到所有权利,我想设置它们.我们可以做这样的选择和管理吗?
问候,
我想创建存储过程来获取特定表的当前id我有很多表,所以我不想为每个表创建sp,
我正在尝试这种方式,但我失败了
create procedure
sp_get_id(mytable varchar(128)) returns(id integer)
as
begin
select gen_id(:mytable, 0) from rdb$database into :id;
suspend;
end
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法将输入参数传递给gen_id,或者我必须为每个表创建不同的sp ..
提前致谢
我是火鸟的新手,我有很多问题.我想在从另一个表中选择的表中插入各种行.
这是代码:
/*CREATE GENERATOR POS; */
SET GENERATOR POS TO 1;
SET TERM ^;
create trigger BAS_pkassign
for MATERIAL
active before insert position 66
EXECUTE BLOCK
AS
declare posid bigint;
select gen_id(POS, 1)
from RDB$DATABASE
into :posid;
BEGIN
END
SET TERM ; ^
INSERT INTO MATERIAL ( /*ID */ LOCATION, POSID, ARTID, ARTIDCONT, QUANTITY )
SELECT 1000, ':posid', 309, BAS_ART.ID, 1
FROM BAS_ART
WHERE BAS_ART.ARTCATEGORY LIKE '%MyWord%'
Run Code Online (Sandbox Code Playgroud)
ID应该从66开始自动增量.posid应该从1开始自动增量.
实际上它没有插入任何东西.
我正在使用Firebird Maestro并刚刚打开了SQL脚本编辑器(在执行脚本时不会抛出任何错误消息).
有谁能够帮我?
谢谢!
附加信息:
触发器应该自动增加列"ID" - 但我不知道我怎么能改变它所以它工作..':posid'使用它抛出一个错误:posid但是像这样没有错误(我猜它被解释为一个串).但是我该如何使用呢?
我执行它时不会出错.表结构很简单.我有2张桌子:1.
Material ( …Run Code Online (Sandbox Code Playgroud) 我需要一个包含所有现有序列及其值的列表.我试过了:
SELECT RDB$GENERATOR_NAME, GEN_ID(RDB$GENERATOR_NAME, 0) FROM RDB$GENERATORS;
Run Code Online (Sandbox Code Playgroud)
要么
SELECT G.RDB$GENERATOR_NAME, GEN_ID(G.RDB$GENERATOR_NAME, 0) FROM RDB$GENERATORS G;
Run Code Online (Sandbox Code Playgroud)
但这些都不正确,因为GEN_ID()将第一个参数视为非常生成器名称,即尝试访问生成器G.RDB$GENERATOR_NAME而不是值G.RDB$GENERATOR_NAME
如何更新包含日期/时间信息的字段以仅包含数据的日期部分?类似于以下内容:
update [EVENTS]
SET [EVENT_DATE] = DATEADD(dd, 0, DATEDIFF(dd, 0, [EVENT_DATE])
WHERE EVENT_NUM = '8592'
Run Code Online (Sandbox Code Playgroud)
我还需要得到相当于将它设置为时间组件?
我有下表
create table LIST_PIPE_TABLE
(
ID INT,
ITEM VARCHAR(4000),
IS_FOLDER VARCHAR(10)
)
Run Code Online (Sandbox Code Playgroud)
有3行数据
insert into LIST_PIPE_TABLE values(1,'Victorias Secret','true')
insert into LIST_PIPE_TABLE values(2,'Porsche','true')
insert into LIST_PIPE_TABLE values(3,'Babbolat','false')
Run Code Online (Sandbox Code Playgroud)
还有一个应该返回结果集的存储过程
CREATE or alter PROCEDURE LIST_PIPE
RETURNS
( col1 varchar(4000),
col2 varchar(10)
)
AS
begin
FOR SELECT ITEM AS ITEM
,IS_FOLDER AS IS_FOLDER
FROM LIST_PIPE_TABLE
into :col1, :col2
do begin
suspend;
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试使用以下语句执行它时
execute procedure LIST_PIPE
Run Code Online (Sandbox Code Playgroud)
返回唯一的一行
COL1 COL2
Victorias Secret true
Run Code Online (Sandbox Code Playgroud)
请告知它有什么问题.我应该如何执行它以查看它旨在返回的所有3行?