更新时间:2024-04-28 GMT+08:00

函数/过程管理

创建函数/过程

  1. 在“对象浏览器”窗格中,右键单击待创建PL/SQL过程的指定模式下的“函数/过程”,按照要求选择“创建函数”、“创建SQL函数”、“创建过程”或“创建C函数”。

    例如右键单击“函数/过程”,弹出如下菜单:

  2. Data Studio在新页签中显示所选模板。

  3. 完成添加函数/过程后,可选择“编译”按钮或在页签空白处右键单击选在“编辑”选项编译该函数/过程。

  4. 编译运行成功后会在“对象浏览器”中显示新函数/过程。

    • 过程名称旁的星号(*),表示该过程不被编译或添加到“对象浏览器”。
    • 刷新(按下“F5”)后,“对象浏览器”中会显示新添加的调试对象。
    • C函数不支持调试操作。
    • 弹出消息显示已完成操作的状态。状态栏将不显示此操作的状态。

编辑函数/过程

  1. 在“对象浏览器”中双击所需过程/函数或SQL函数,或右键单击函数/过程或SQL函数并选择“查看源”。

    “PL/SQL Viewer”页签显示所选函数/过程或SQL函数。

    • 用户必须刷新“对象浏览器”才能查看最新DDL。
    • 拥有相同模式、名称和输入参数的函数/过程或SQL函数一次只能打开一个。

  2. 编辑或更新后,可以编译并执行该PL/SQL程序或SQL函数。

    在编译前若执行函数/过程或SQL函数,会显示一条“改变源代码”的提示。

  3. 单击“”,编译并执行PL/SQL函数/过程。“消息”对话框显示已完成操作的状态。
  4. 编译函数/过程或SQL函数后,刷新“对象浏览器”(按下“F5”)查看更新后信息。

授权/撤销权限

  1. 右键单击函数/过程组并选择“授权/撤销权限”。弹出“授权/撤销权限”对话框。
  2. 打开“选择对象”页签,选择待授权/撤销权限的对象,并单击“下一步”。
  3. 打开“选择权限”页签,从“角色”中选择对应角色,并勾选需要“授予”或“撤销”的权限。
  4. 在“SQL预览”页签,可以查看根据以上输入自动生成的SQL查询。如发现有不符合预期,可返回上一步修改,直至符合预期。
  5. 单击“完成”。

调试函数/过程

断点用于暂停其所在行中的PL/SQL程序的执行,可用断点控制执行并调试过程。设置并启用断点后,PL/SQL程序会在该断点所在的行停止执行,此时用户可以进行其他调试操作。

  • 设置或添加断点

    Data Studio支持为某行设置或创建断点。

    打开需要添加断点的函数/过程,双击行号字段左侧的断点标尺,设置断点,断点标志启用表示操作成功。如果函数在调试过程中不会间断或停止执行,则为其设置的断点未生效。

  • 使用“断点”窗格

    在“断点”窗格中可查看和管理已有断点。可从最小化窗口窗格中单击断点按钮打开“断点”窗格。

    在“断点”窗格中,勾选断点复选框,单击“启用”、“禁用”或“移除”按钮,进行断点启用、禁用或者删除操作。也可双击行号字段左侧的断点标尺设置断点;双击断点图标,将断点删除。

    在“PL/SQL Viewer”窗格,双击所需断点信息行,定位该断点。

    • “断点”窗格会列出每一个断点所在行的行号以及调试对象的名称。
    • 禁用断点后,程序不会在该断点处暂停执行,但该断点仍会保留(以备将来启用)。
    • 删除的断点无法恢复。
    • 按下“Alt+Y”可复制“断点”窗格内容。
  • 修改源代码

    调试过程中,如果用户修改了从服务器获取的源代码,并继续进行调试,Data Studio会提示错误:建议刷新该对象,再次执行调试操作。

    如果用户修改了从服务器获取的源代码,且在未设置断点的情况下执行或调试了该代码,Data Studio会显示服务器中源代码的执行结果。建议在进行调试或者执行前,进行刷新操作。

  • 使用断点调试函数/过程

    在要调试的行创建断点后,单击“调试”按钮或在“对象浏览器”中右键单击函数,选择“调试”。在弹出的“调试函数/过程”对话框中,输入参数信息。

    • 如果没有输入参数,则“调试函数/过程”对话框不会弹出。
    • 对于varchar和date数据类型,参数值需加半角单引号(');对于numeric数据类型,参数值可以不加半角单引号。要将参数值设为NULL,需输入NULL或null。
    • 调试或执行函数或过程期间,相同参数的值会在下次操作中被直接使用。首次执行时,参数值为空,可根据需要输入参数值。单击“确定”,参数值将被缓存。下次查询时,执行/调试期间会显示上次缓存的相同参数的值。某一连接被删除后,缓存的所有参数值都会被清除。
    • 调试过程中“调用堆栈”窗格会填充信息。

    • “变量”窗格显示当前的变量值。将鼠标悬停在函数/过程中的变量上,也会显示当前的变量值。“变量”窗格默认显示系统变量。必要时,用户可以屏蔽系统变量。按钮默认开启,即默认启用系统变量。

      设置/展示变量

      说明

      设置NULL值

      1. 在“变量”窗格中双击一个变量值。

        弹出对话框。

      2. 设置值为空。

      设置字符串值

      设置字符串值如下:

      • 要设置为abc,则输入abc。
      • 要设置为Master's Degree,则输入Master''s Degree。
      • 要将变量设置为文本(NULL),在“变量”窗格中设置NULL。

      设置Boolean值

      Boolean值t或f上加单引号。将t设成一个boolean变量,则在Variable窗格中输入't'

      显示变量值

      如果变量值是NULL文本,则显示为NULL。

      如果变量值是NULL,则显示为空。

      如果变量值为字符串,比如abc,则显示为abc。

    • 调试函数/过程期间,在编辑器中右键单击变量,可将变量添加至“监视器”窗格。如果变量处于被监控状态,“监视器”窗格中的值会随“变量”窗格中值的变化而变。
    • 在Data Studio中调试PL/SQl函数期间,将光标放在变量上方,则会显示该变量的信息。
  • 终止调试

    在工具栏中单击“终止调试”按钮或在“调试”菜单中选择“终端调试”。调试完成后,函数会继续正常执行,不会在任何断点暂停。

    调试完成后,“结果”页签中显示函数执行结果,“调用堆栈”和“变量”窗格将被清除。

  • Data Studio支持在调试完成后,提交/回滚查询结果。右键单击执行函数的终端窗格,勾选“使用回滚进行调试”启用回滚功能。
    • 如果启用了“使用回滚进行调试”选项,则调试后获取的函数执行结果不会保存在数据库中。
    • 如果禁用了“使用回滚进行调试”选项,则调试后获取的函数执行结果被提交到数据库中。

控制执行

  • 单步调试PL/SQL函数

    调试执行函数时,可使用工具栏中的单步调试命令。通过进行单步控制,可逐行调试程序。如果进行单步操作时遇到断点,则该单步操作会停止,程序也会暂停执行。

    “单步”是指一次执行一条语句。单步执行一条语句后,可以在其他调试窗口中查看执行结果。

    一次最多可以弹出100个“PL/SQL Viewer”页签。如果打开的页签超过100个,则调用函数页签关闭。例如,如果已打开100个页签,且调试对象调用了新调试对象,则Data Studio会关闭调用函数并打开新的调试对象。

  • 单步进入

    在“调试”菜单中选择单步进入,可以逐条语句执行代码。

    当单步跳入一个函数,Data Studio执行当前语句,然后进入调试模式,调试位置由左侧标尺区域中的箭头表示。如果执行语句调用另一个函数,Data Studio将单步跳入该函数。一旦函数中的所有语句执行完成,Data Studio将跳回其调用函数的下一语句。

    单步进入(F7),进入下一语句如果按“继续”,PL/SQL代码执行将继续。

  • 单步跳过

    单步跳过与单步进入相同,除非调用了另一个函数,否则不会跳入该函数。该函数将运行,进入当前函数中的下一个语句。F8是单步跳过的快捷键。如果该调用函数内设置了断点,单步跳过将进入该函数,并命中该断点。

  • 单步退出

    子程序单步退出,继续该函数的执行,在该过程返回其调用函数后,暂停执行,确定该函数的剩余部分无需调试后,可单步退出该段函数。然而,如果该函数其余部分设置了断点,在返回调用函数前,该断点将被命中。

    单步跳过和单步退出过程都会执行函数。单步退出操作的快捷键是“Shift+F7”。

  • 继续执行

    调试进程在某一位置停止时,可在“调试”菜单中选择“继续”(F9)继续PL/SQL函数执行。

  • 查看调用堆栈

    调用堆栈”窗格展示调用过程时的过程链。可从最小化窗口窗格中打开“调用堆栈”窗格。最近的过程在顶部,最早的在底部,每个程序名的末尾是该过程的当前行号。

    双击“调用堆栈”窗格中的函数名,通过“调用堆栈”窗格在多个函数中导航。

导出函数/过程DDL

可通过右键单击“导出DDL”导出该函数/过程定义。

  1. 在“对象浏览器”窗格中,右键单击所选函数/过程,选择“导出DDL”。

    用户需自定义导出路径。如果需要将数据压缩,勾选“.zip”选项。

    Data Studio安全免责声明”必须勾选“我同意”才可以单击“确定”。用户可关闭安全免责声明,关闭后导出DDL时将不会再出现,详情请参见表1

  2. 单击“确定”,右下角的状态栏会显示操作进度。

    • 如果文件名包含Windows中文件名不支持的字符,则文件名的名称会与模式名称不同。
    • 要执行该操作,需要MS Visual C Runtime文件(msvcrt100.dll)。详情请参阅故障处理

    导出完成”对话框和状态栏显示已完成操作的状态。

    表1 支持导出DDL的编码格式

    数据库编码

    文件编码

    支持导出DDL

    UTF-8

    UTF-8

    GBK

    LATIN1

    GBK

    GBK

    UTF-8

    LATIN1

    LATIN1

    LATIN1

    GBK

    UTF-8

删除函数/过程

可单独或批量删除函数/程序。

  1. 在“对象浏览器”窗格中右键单击函数/过程对象,选择“删除函数/过程”。
  2. 选中一个或多个函数/过程对象,选择“删除对象”。
  3. Data Studio提示确认该操作窗口中,单击“”完成该操作。

    状态栏显示已完成操作的状态。