首页 > 数据库 >Oracle上线包里的@和@@有什么区别?

Oracle上线包里的@和@@有什么区别?

时间:2022-12-12 10:33:06浏览次数:35  
标签:包里 上线 SQL update sql Oracle world main hello

Oracle存储过程的发布方式比较古老, 使用sqlplus工具,运行一个入口文件,文件内通过@符号的方式调用其他文件或执行入口文件中的sql,而调用其他文件的方法有@、@@、start 他们分别有什么区别呢?
@跟start 功能相同,至少发布这一块功能是相同的。 剩下是@和@@

  • 区别体现在Linux中,在Windows PLSQL工具中无区别。

    • 双@符号,认为被调用脚本与入口文件同目录,实际工作中使用较多;
    • 单@符号,认为被调用脚本在当前工作目录,实际工作中使用较少,因为你不知道dba究竟在什么目录下执行。
  • 下面准备了一个简单的测试,测试内容如下:

    • 上线包中包含三个.sql 脚本,其中update_main.sql是入口文件, 它分别调用了hello.sql 和 world.sql

测试脚本内容

  • update_main.sql
set serveroutput on
@hello.sql
@world.sql

  • hello.sql
exec dbms_output.put_line('hello');
  • world.sql
exec dbms_output.put_line('world');

当调用者使用sqlplus 调用update_main.sql时,当前目录跟update_main.sql所在目录不是同一个目录时,则使用单个@符号的调用会报错。 会报找不到hello.sql 和world.sql 。
当前目录受到 ORACLE_PATH或SQLPATH环境变量控制,这里不做讨论。

SQL> !pwd
/home/oracle

SQL> @/home/oracle/plsqltest/update_main.sql
SP2-0310: unable to open file "hello.sql"
SP2-0310: unable to open file "world.sql"

调整update_main.sql中的单个@变成双@

SQL> !cat ./plsqltest/update_main.sql
set serveroutput on
@@hello.sql
@@world.sql

SQL> @/home/oracle/plsqltest/update_main.sql
hello

PL/SQL procedure successfully completed.

world

PL/SQL procedure successfully completed.



标签:包里,上线,SQL,update,sql,Oracle,world,main,hello
From: https://www.cnblogs.com/fooobabar/p/16975428.html

相关文章

  • Oracle 跟踪文件trc,trm
    oracle的日志文件有以下几种:警告日志,trace日志,audit日志,redo日志,归档日志a.警告日志:也就是alertlog,使用初始化参数showparameterbackgroud_dump_dest查看b.trace日......
  • oracle数据库常用操作
    1,调整显示格式colusernamefora20colDEFAULT_TABLESPACEfora302,查看表空间selectusername,default_tablespacefromdba_users;3,创建用户DROP......
  • BadUSB超详细制作, 实现CobaltStrike远控上线
    前言在2014年美国黑帽大会上,安全研究人员JakobLell和独立安全研究人员KarstenNohl展示了他们称为“BadUSB”的攻击方法,这种攻击方法让USB安全和几乎所有和USB相关的设备(......
  • oracle 10g中一个奇怪的定时bug
    最近遇到台机器很奇怪,oracle连接数正常,但好象隔了4-5个月的一天,就突然发现CPU基本是100%,HANG住了,但内存和连接数没上升,只有重新启动机器,后来......
  • 打包优化,nginx部署到本地nginx服务器,模拟验证上线
    //npmrunbuild自动设置process.env.NODE_ENV=>'production'//npmrunserve则会设置为devlopmentconstisProduction=process.env.NODE_ENV==='production'......
  • 信息服务上线渗透检测网络安全检查报告和解决方案
    项目场景在健康云信息服务上线后,通过专业的网络安全团队,对系统进行全面的检测。渗透检测结果显示系统存在明显漏洞:文件上传漏洞、手机验证码发送接口流控功能、SQL注入漏洞......
  • 查看Oracle某时刻的客户端IP连接情况
    1、查看每个oracle帐户的连接总数Sql代码 selectusername,count(username)fromv$sessionwhereusernameisnotnullgroupbyusername 2、缺省从v$session中不能......
  • 运用ogg实现oracle 10g到19c的单表迁移
    文档课题:运用ogg实现oracle10g到19c的单表迁移.核心思想:利用导入导出初始化数据后通过OGG同步增量数据.源端:192.168.133.108数据库oracle10.2.0.464位,实例名:orcl目......
  • oracle日期函数简单使用
    selectto_char(sysdate,'yyyyMM')fromdual;selectto_char(to_date('202210','yyyyMM'),'yyyyMM')fromdual;--计算月份差值返回整数selectmonths_bet......
  • 2、Oracle常用数据类型
    1、字符类型char:定长字符串,指定字节长度,会自动用空格补齐长度。varchar2():变长字符串,指定字节长度,不会自动补齐长度。nvarchar2():变长字符串,指定字符长度,不......