Firebird BLR 是否包含相关字段大小?

2024-02-29

Firebird 和 InterBase 以 BLR(标记化)格式保存存储过程和触发器的编译形式。

但我不太了解BLR的结构。

字段大小是 BLR 的一部分吗?

当存储过程包含两个字段(源和目标)并且稍后我将更改这两个字段的大小时,我会遇到一些问题吗?

例如他们是varchar(50)很长,但现在我把它们改为varchar(100)与系统表更新。会发生什么?它会只复制 50 个字符,还是全部(100 个)?

或者 BLR 仅包含对象链接(表和字段)?

我将尝试用“伪”代码进行演示:

begin
  for select comp_id, comp_name from companies where ...
    into :ci, :cn 
    do begin
      -- somehow we're adding this to another table
      insert into new_clients (id, name) values (:ci, :cn);
    end
end;

这可以是触发器或存储过程。

  1. Comp_name, and new_clients.name最初是varchar(50).
  2. 我添加这个过程或触发器。一天下来效果很好。
  3. 后来我意识到这些字段太短,无法容纳我的数据。
  4. 我使用 GUI(例如 IBExpert)将这些字段更改为varchar(150).
  5. 没事,大家都还好varchar(150) now.

那么会发生什么呢?

  1. 如果 BLR 也包含字段大小,那么我更改字段的大小并不重要。触发器副本有 50 个字符,因为它已经预先编译了长度。
  2. 如果 BLR 仅使用表和字段的关联/链接/标记,我们可以更改字段而不必担心复制功能。

问题是相同的:BLR 是否包含相关字段的大小?


首先,您可以在 ISQL 中查看过程的 BLR:



SQL> create or alter procedure p1 (i1 varchar(10), i2 varchar(20)) returns (o1 varchar(30)) as begin end!
SQL> set blob all!
SQL> commit!
SQL> select rdb$procedure_blr from rdb$procedures where rdb$procedure_name = 'P1'!

blr_version5,
blr_begin,
   blr_message, 0, 4,0,
      blr_varying2, 0,0, 10,0,
      blr_short, 0,
      blr_varying2, 0,0, 20,0,
      blr_short, 0,
   blr_message, 1, 3,0,
      blr_varying2, 0,0, 30,0,
      blr_short, 0,
      blr_short, 0,
   blr_receive, 0,
    ...
blr_eoc

  

其次,永远不要更改系统表。

第三,是的,你会有问题!这就是为什么没有ALTER PROCEDURE PARAMETER命令。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Firebird BLR 是否包含相关字段大小? 的相关文章

  • 如何使用 mysql 使用输入和输出参数调用 Entity Framework Core 中的存储过程

    我使用 ASP net Core 2 2 与 Entity Framework core 2 2 6 和 Pomelo EntityFrameworkCore MySql 2 2 0 来连接 MySQL 我有一个存储过程 它需要 3 个输入
  • MVC 5 中的存储过程不返回值

    我正在通过数据库方法使用实体框架 MVC5 进行工作 我使用Mysql作为数据库 我创建一个程序 当通话流程在Mysql中它按照我的预期工作 但是当我在 MVC 中使用过程时 它每次都会返回 0 储存程序 CREATE PROCEDURE
  • 我想从互联网路径的 videoview 获取视频大小(以 MB 为单位)

    我试图在开始视频之前获取视频文件大小并将其显示在布局中 我已经尝试了很多东西 但它不起作用 video player view VideoView findViewById R id videoView2 media Controller
  • 自动调整 ggplot 中条形的大小以实现多个图形 R 的均匀性

    我在循环中生成几个条形图 它们都根据输出大小 从绘图 设备大小假设 而不是根据条形大小调整大小 这意味着具有两个条形图的图具有粗条形图 而具有 6 个条形图的图具有细条形图 但两个输出的大小相同 下面的代码代表了我的带有可重现数据的脚本 我
  • 如何在 Kivy 中设置小部件/布局的最小允许宽度/高度?

    我有包含 3 个元素的 BoxLayout 我需要第一个和最后一个元素占据最小的可用空间 中间元素具有固定比例 1 1 因此当我调整窗口大小时 侧面元素变得太小并且内容会超出其中 我需要例如标签 或按钮 甚至不同元素的集合 文本始终insi
  • SQL Server 2005:“保护”存储过程免受 MS Access 使用的 FMTONLY 模式影响

    我们拥有的一些存储过程包含条件逻辑 如下所示 Create Procedure dbo DoSomething Some Parameters As If Some Condition Begin Set SomeVariable Some
  • 在 SQL 存储过程中选择并合并表中的行

    有一个具有架构的临时表 ID 序列号 姓名 ID 不唯一SeqNo 整数 可以是 1 2 或 3 以ID SeqNo作为主键排序名称 任何文本 表中的示例数据如下 1 1 RecordA 2 1 RecordB 3 1 RecordC 1
  • C# 中类实例的内存使用情况[重复]

    这个问题在这里已经有答案了 可能的重复 C NET 对象使用多少内存 https stackoverflow com questions 426396 how much memory does a c net object use 就像标题
  • 各种 Android 设备的应用程序背景大小

    我正在为所有 Android 设备的应用程序设计背景 我在想图像的大小 以像素为单位 是多少 从开发者网站我发现了以下等式 px dp dpi 160 那么 px 取决于两个变量 首先 dp 我们有 xlarge screens are a
  • linq-to-sql:存储过程不能在查询中使用

    这在 VS2010 RC LINQ to SQL 上失败 并出现 InvalidOperationException 存储过程不能在查询内使用 var foo from a in aTable from b in this SomeStor
  • Spring Data JPA NamedStoredProcedureQuery 多个输出参数

    我有一个简单的存储过程 用于测试 Spring Data JPA 存储过程功能 create or replace procedure plus1inout arg in int res1 out int res2 out int is B
  • 可以使用多个数据库连接

    tSQLt 世界的新手 很棒的工具集 在我正在为其设置测试的存储过程中遇到了一个小问题 如果由于某种原因我有一个连接到多个数据库甚至多个 SQL 服务器 链接服务器 的存储过程 在这种情况下是否可以使用 tSQLt 进行单元测试 我已经评论
  • 查询不可更新

    我正在尝试使用 BE SQL Server 2012 Express 中的记录更新本地 Access 2007 表 我的步骤在这里 SQL Server中存在带有4个参数的存储过程来获取所需的记录 Access VBA中有调用SP并进行临时
  • 无法将参数值从字符串转换为小数?

    我有一个像这样的存储过程 ALTER PROCEDURE dbo usp CSR UpdateDailyCustomerWithLCDHistory Add the parameters for the stored procedure h
  • 使用 EntityFramework 使用空参数值调用存储过程

    我在 sqlserver 2008 上有一个存储过程 其中一个参数接受空值 我不知道如何使用参数上的空值来调用该 SP 为了获得更多上下文 我正在使用 EntityFramework 6xx 在下一个示例中 参数 status Compat
  • 存储过程将多个表返回到 spring jdbc 模板

    我正在使用 JdbcTemplate 从 Spring DAO 类调用存储过程 我的问题是 存储过程返回多个表 有没有办法使用 Spring JdbcTemplate 访问多个表 如果我使用jdbcTemplate queryForList
  • 两个日期/时间字段之间的差异 - Lotus Notes

    我有三个可编辑的日期 时间字段 前两个是 field1 和 field2 样式 日历 时间控件 两者都显示时间 小时和分钟 例如 15 51 第三个字段也是 可编辑的 我想显示 field1 和 field2 之间的区别 例如 如果 fie
  • 可以有多个用户作为 MySQL 存储过程的定义者吗?

    我在 MySQL 存储过程方面遇到了一些困难 并且感到有点沮丧 我有一组由 Bob 创建的 SP 由于他是定义者 只有他才能看到它们的 CREATE 语句 修改它们等 Mary 可以在 MySQL Workbench 的架构中看到 Bob
  • 将程序存储在 phpMyAdmin 中

    我必须将存储过程添加到 MySQL 数据库 问题是托管提供php我的管理员来管理数据库 我在网上搜索了一下 想法是运行创建程序的MySQL本机语句 但由于程序的代码通常可能有 我们必须更改 MySQL 中的分隔符 php我的管理员没有这个选
  • 未加载 Firebird 扩展

    我正在尝试在 PHP 中使用 Firebird 扩展 我有扩展文件 php pdo firebird dll php interbase dll in my ext文件夹 我将它们添加到我的php ini像这样文件 PHP PDO FIRE

随机推荐

  • 无法通过管道以自定义方式重命名下载的图像

    我使用 python 的 scrapy 模块创建了一个脚本 从 torrent 站点下载并重命名电影图像 并将它们存储在 scrapy 项目内的文件夹中 当我按原样运行脚本时 我发现它正确地下载了该文件夹中的图像 此时 脚本正在使用 req
  • javascript从所选国家/地区值中选择城市

    我有来自这里的国家数据库http www webmasterworld com html 3018309 htm http www webmasterworld com html 3018309 htm有239个国家 每个国家都有价值 在选
  • 这个指针类型防水吗?

    我正在尝试设计一种自定义类型 可以在需要窗口句柄或其他类型指针的 API 中使用 并且适用于 VBA 可以运行的所有系统 这是我所得到的 If Win64 1 And VBA7 0 Then Public Type LongLong 64
  • Chart.js 上的悬停模式

    当您未将鼠标悬停在折线图中的特定 点 上时 是否可以激活悬停 I want that每当我将鼠标悬停在图表的任何部分上时就会激活特定的工具提示 Edit 像这样的东西http watchstocks herokuapp com http w
  • 减少纬度和经度点数的最快方法

    我正在尝试减少并组合一些点到这些位置的中心点 现在 我通过找到最接近的一对 将它们组合起来并重复 直到将其减少到我的目标 旁注 实际上我通过排序来减少问题 lat lat long long 然后在每个点的两侧搜索 10 根据我的测试 总是
  • Swift 框架在 lldb 中返回“模糊使用”方法扩展

    我已升级到 Xcode 11 和 swift 5 并在通过框架提供方法扩展时遇到了问题 更具体地说 在一个结构如下的项目中 gt Main Project gt Framework created from sources in Main
  • Keras 1.0 支持 scipy 稀疏矩阵吗?

    我找不到关于 keras 是否支持 scipy 稀疏矩阵作为训练 测试向量的明确答案 我已阅读此链接 这似乎意味着它没有https www kaggle com c walmart recruiting trip type classifi
  • R闪亮滑块输入显示时间

    我有一个与 R Shiny 中的 sliderInput 相关的问题 在 sliderInput 中 该值是一个数字 一些示例显示该数字是 number 但是 如果我想将 sliderInput 的值显示为时间 例如 10 00 15 00
  • 如何循环匹配正则表达式的所有元素?

    案例如下 我想找到与正则表达式匹配的元素 targetText SomeT1extSomeT2extSomeT3extSomeT4extSomeT5extSomeT6ext 我在 javascript 中使用正则表达式 如下所示 reg n
  • Xcode 自动完成块内块(以及它们所在的块......)

    如何设置一个块属性 该属性将另一个块属性作为参数 以便自动完成功能为两个块提供所有必需的参数 为了进一步解释 我将演示自动完成功能如何仅适用于一个块属性 In AppDelegate h 为所有需要访问 block 属性的类创建一个引用 A
  • 如何阻止 PHP 向客户端发送数据,同时仍在服务器中运行 PHP 代码?

    当我遇到一个导致我的 PHP 程序无限循环的错误时 我想到了这个问题 下面是一个示例情况 假设我有一个接收图片上传的PHP网页 该页面可能是图像上传表单的响应页面 在服务器中 脚本应将图像存储在临时文件中 然后 脚本应该向客户端输出一条确认
  • 预处理 C# - 检测方法

    我需要能够预处理多个 C 文件作为项目的预构建步骤 检测方法的开始 并在方法的开始处 任何现有代码之前 插入生成的代码 但是 我在检测方法的打开时遇到问题 我最初尝试使用正则表达式进行匹配 但最终出现了太多误报 我会使用反射 但 Metho
  • Firebase 查询数据

    random key 1 id 0 text This is text random key 2 id 1 text This is text 如果我像这样存储数据 并且我想获取节点id等于0 我怎样才能做到这一点 上面是孩子issue 它
  • Angular2组件单向绑定还是输入?

    在角度 2 中 如果我看到
  • AWS Cloud9:Python 虚拟环境并未实际激活。使用系统范围的Python

    刚刚开始使用 AWS Cloud9 开始了一个新项目 Django with Beanstalk 打开Cloud9环境 输入virtualenv python usr bin python3 6 venv 然后 当我输入 sourse ve
  • 如何安装 VS 2017 的 SignTool.exe?

    升级到 VS 2017 后我得到了 错误 签名时发生错误 找不到 SignTool exe 但仅在 Visual Studio 上使用 MSbuild 发布是没有问题的 我已经检查过文件夹 C Program Files x86 Micro
  • 使用 Bootstrap(使用 Firefox 浏览器)的表单上,选择控件缺少箭头图标

    我在使用 Bootstrap 使用 Firefox 浏览器 的表单上有一个选择控件 但它缺少右侧的箭头图标 这是我使用的相关 HTML div class container fluid div
  • 使用 Ruby CSV 提取一列

    我一直在尝试从 csv 文件中获取单列 我已经查看了文档 http www ruby doc org stdlib libdoc csv rdoc index html http www ruby doc org stdlib libdoc
  • 将 AnnotationMethodHandlerAdapter 替换为 RequestMappingHandlerAdapter 问题

    我最近升级到 spring 3 2 并注意到AnnotationMethodHandlerAdapter已被弃用 取而代之的是RequestMappingHandlerAdapter 所以我重新配置为使用新类 并完成自定义MessageCo
  • Firebird BLR 是否包含相关字段大小?

    Firebird 和 InterBase 以 BLR 标记化 格式保存存储过程和触发器的编译形式 但我不太了解BLR的结构 字段大小是 BLR 的一部分吗 当存储过程包含两个字段 源和目标 并且稍后我将更改这两个字段的大小时 我会遇到一些问