标签: firebird

如何做一个firebird SP,SELECT*FROM"TABLE"?

我正在从SQL Server迁移到Firebird.

在SQL Server中

CREATE PROCEDURE Departments_GetAll
AS
    SELECT * FROM Departments
Run Code Online (Sandbox Code Playgroud)

我在Firebird中尝试

CREATE PROCEDURE DEPARTMENTS_DELETEALL
AS 
BEGIN
  SELECT * FROM "Departments";
END^

SET TERM ; ^
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

它返回错误"SQL Code -104"

sql firebird select stored-procedures

6
推荐指数
1
解决办法
8605
查看次数

Firebird x Windows 7 x gds32.dll错误

我有一个来自新客户端的fdb文件(firebird)(他不知道版本).我曾尝试使用一些GUI来访问数据库,但没有运气.所有这些都告诉它缺少gds32.dll,但我有这个.

我已将此dll复制到GUI文件夹,我已将dll复制到system32文件夹,并已复制到syswow64.我运行Windows 7 64位,firebird数据库是32位.我试图安装DLL但我无法注册它.

我已经在虚拟机中安装了WinXP以查看它是否运行,但没有.regsvr32告诉我它不是一个可执行文件...在Win 7中,这个DLL可能与Windows版本不兼容.

我试过IbExpert Personal,Ibmanager和Flamerobin,他们向我显示了同样的错误,没有找到或没有安装dll.

如何打开这个firebird db?

firebird windows-7

6
推荐指数
2
解决办法
5万
查看次数

有没有办法在Firebird存储过程中创建本地表变量?

在MS SQL Server中,您可以声明任何基本类型或表类型的局部变量.此表是可以运行一个普通的表SELECT,INSERT,UPDATEDELETE上,就像任何其他表,但它是一个局部变量,而不是数据库本身的一部分.

我试图在Firebird中做同样的事情,但它似乎不喜欢语法.

declare variable value int; --works fine
declare variable values table (value int); --Error: "Token unknown (table)"
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?(和任何人说,之前的"使用可选的存储过程,"这是行不通的.我需要的东西,我可以动态运行INSERTSELECT对.)

firebird stored-procedures

6
推荐指数
1
解决办法
3886
查看次数

使用Entity Framework插入时有条件地设置Identity字段

我正在使用带有Entity Framework的Firebird ADO.NET提供程序,但这个问题也适用于其他提供程序.

我的模型上有一个字段如下

    [Column("JOBNO"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int JobNo { get; set; }
Run Code Online (Sandbox Code Playgroud)

在数据库中,我有一个'on insert'触发器,JOBNO如果JOBNO设置为,则使用生成器更新字段NULL

通过在我的模型字段上设置DatabaseGenerated属性DatabaseGeneratedOption.Identity,实体框架正确地JOBNO从插入数据库中提取数据.

但有时我想JOBNO在插入时手动指定列,但EF不理解并只使用生成的值.

有没有办法允许这个DataBaseGenerated字段的条件设置?

c# firebird entity-framework

6
推荐指数
1
解决办法
780
查看次数

两个日期之间的工作日火鸟

我需要计算 firebird base(版本 2.5)中两个日期之间的工作日

我有一个带有工作日(日期,天--空闲/工作)的表(table_date),我还有另一个带有start_date和end_date的表。例如,我们有两个日期 start_date=2015-04-04 和 end_date=2015-04-10 2015-04-05 和 2015-04-06 是免费的。这两个日期之间有 6 天,但 4 个工作日。

如何在基数中计算这个?

sql firebird date between

6
推荐指数
1
解决办法
7599
查看次数

Node-firebird依次选择

我试图通过顺序选择选项从Firebird DB获取数据.我想在我的代码中看到前500行.为了测试,我为每个'row'增加'k'并将'k'和'md5'记录到控制台.

当我运行我的代码时,它给我随机的行数.但行数总是超过500.

我怎么解决这个问题?有什么建议?

var Firebird = require('node-firebird');
var md5 = require('md5');
var options = {};
//options.host = '127.0.0.1';
//options.port = 3050;
options.database = '/Users/bla/mydb.FDB';
options.user = 'SYSDBA';
options.password = 'masterkey';
var pool = Firebird.pool(10, options);
var k = 0;
pool.get(function (err, db) {

  if (err)
    throw err;
  db.sequentially('SELECT FIRST 500 SOME QUERY', function (row, index) {
    k = k + 1;
    console.log(k + ' => ' + md5(JSON.stringify(row)) + '\n');
  }, function (err) {
    db.detach();
  });
});
Run Code Online (Sandbox Code Playgroud)

javascript database firebird node.js

6
推荐指数
1
解决办法
1421
查看次数

Firebird Cursors - 你为什么要使用它?

此处的文档中,给出了以下代码示例cursor:

execute block
returns (
  relation char(31), 
  sysflag int)
as
declare cur cursor for 
  (select rdb$relation_name, rdb$system_flag from rdb$relations);
begin
  open cur;
  while (1=1) do
  begin
    fetch cur into relation, sysflag;
    if (row_count = 0) then leave;
    suspend;
  end
  close cur;
end
Run Code Online (Sandbox Code Playgroud)

但这也可以按如下方式完成:

execute block
returns (
  relation char(31), 
  sysflag int)
as
begin
  for select rdb$relation_name, rdb$system_flag 
  from rdb$relations 
  into relation, sysflag 
  do begin
    suspend;
  end
end
Run Code Online (Sandbox Code Playgroud)

那我为什么要用一个呢?最终上面的例子甚至不需要,execlute block因为它只是一个简单的选择语句.所以我想这个例子太简单了,无法证明这一点.

sql firebird cursor

6
推荐指数
1
解决办法
2094
查看次数

如何在流畅的nhibernate映射中使用数据库过程

我有这门课

public class Bill : EntityBase
{
      public virtual decimal Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在下面的映射中,我使用a中的过程填充'Value'的值 Formula()

public class MapBill : ClassMap<Bill>
{
    public MapBill()
    {
        Table("cabrec");
        Map(m => m.Value)
            .Formula(
"(select t.VALOR_IND from ret_vlorind(1,1,cast('02/06/1993' as Date)) as t)")
            .CustomType(typeof(decimal));
    }
}
Run Code Online (Sandbox Code Playgroud)

但它在执行时返回错误:

{"Dynamic SQL Error\r\nSQL error code = -104\r\nToken unknown - line 1, column 279\r\n."}
Run Code Online (Sandbox Code Playgroud)

有没有办法在流利的nhibernate中使用程序?

c# nhibernate firebird fluent-nhibernate

6
推荐指数
1
解决办法
107
查看次数

"错误op_response:0",带有预处理语句

我正在使用来自"github.com/nakagami/firebirdsql"的firebird数据库驱动程序和GO1.11 + FB2.5

但我无法准备SELECT工作,它在执行第二个QUERYROW()时抛出"错误op_response:0"错误.有任何想法吗?

有没有替代司机?或者我使用不正确的驱动程序?

func test1(tx *sql.Tx) {
    sqlStr := "SELECT number FROM order WHERE id=?"
    stmt, err := tx.Prepare(sqlStr)
    if err != nil {
        panic(err.Error())
    }
    var value string
    err = stmt.QueryRow(123).Scan(&value)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(value)

    err = stmt.QueryRow(200).Scan(&value)
    if err != nil {
        panic(err.Error())
    }
    fmt.Println(value)    
}
Run Code Online (Sandbox Code Playgroud)

结果:

INV20183121
panic: Error op_response:0

goroutine 1 [running]:
main.test1(0xc00009c000, 0xc0000a8200)
Run Code Online (Sandbox Code Playgroud)

sql firebird go

6
推荐指数
1
解决办法
176
查看次数

无法识别 Spring Data JDBC Firebird 方言

我正在尝试使用 Spring Data JDBC 和 Spring Boot 连接到 Firebird 数据库。我使用 Spring Tools 创建了一个简单的应用程序。Spring Data JDBC 无法识别方言。我认为问题在于DialectResolver它不支持 Firebird。

private static Dialect getDialect(Connection connection) throws SQLException {

    DatabaseMetaData metaData = connection.getMetaData();

    String name = metaData.getDatabaseProductName().toLowerCase(Locale.ENGLISH);

    if (name.contains("hsql")) {
        return HsqlDbDialect.INSTANCE;
    }
    if (name.contains("h2")) {
        return H2Dialect.INSTANCE;
    }
    if (name.contains("mysql")) { // catches also mariadb
        return new MySqlDialect(getIdentifierProcessing(metaData));
    }
    if (name.contains("postgresql")) {
        return PostgresDialect.INSTANCE;
    }
    if (name.contains("microsoft")) {
        return SqlServerDialect.INSTANCE;
    }
    if (name.contains("db2")) {
        return Db2Dialect.INSTANCE;
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

我是 …

firebird spring jaybird spring-boot spring-data-jdbc

6
推荐指数
2
解决办法
8612
查看次数