当前位置: 首页 > news >正文

为什么要建设医院网站/百度手机助手下载2021新版

为什么要建设医院网站,百度手机助手下载2021新版,东莞网站建设图表,东莞网站建设网站排名优化作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课…

作者:杨涛涛

资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课程培训等工作。

本文来源:原创投稿

*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。


今天遇到一个 OceanBase 数据库下 Oracle 租户的 PLSQL 分隔符问题,特来分享下。

我的初衷是对 Oracle 租户下的一张表造点随机数据,写好了 INSERT 语句,却提示没有函数 dbms_random.value 。于是查阅 OceanBase 官方文档,发现需要导入系统包 dbms_random !dbms_random 系统包存放在 OceanBase 安装目录下的 admin 子目录里,包含两个 SQL 文件,一个是包的声明 SQL:dbms_random.sql;另一个是包的定义 SQL:dbms_random_body.sql 。

我在 obclient 下导入这两个 SQL 文件,直接报语法错误。官方给的 SQL 文件怎么可能有语法错误呢?估计是我没有完全按照文档来规范操作而导致的问题。

最终我把报错的地方提取出来,整理成如下简单函数:

 create or replace function tt return number isv1 number;v2 number;beginv1 := 10;v2 := sqrt(-2 * ln(v1)/v1);return v2;end;/

直接执行这个函数,也是报同样的错误。

<mysql:5.6.25:SYS> create or replace function tt return number is->  v1 number;->  v2 number;->  begin->    v1 := 10;->    v2 := sqrt(-2 * ln(v1)/v1);
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'sqlrt(2 * ln(v1)' at line 6
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'v1)' at line 1
<mysql:5.6.25:SYS>   return v2;
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'return v2' at line 1
<mysql:5.6.25:SYS> end;
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'end' at line 1
<mysql:5.6.25:SYS> /-> ;
ORA-00900: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '/' at line 1
<mysql:5.6.25:SYS>

于是我把这个函数在我本地的 Oracle 环境中执行,一切正常:看来是 OceanBase 自身的环境问题。

create or replace function tt return number isv1 number;v2 number;beginv1 := 10;v2 := sqrt(-2 * ln(v1)/v1);return v2;end;2    3    4    5    6    7    8    9   /Function created.Elapsed: 00:00:00.02
YTT@helowin> 

这个函数写的非常简单,求一个给定参数的平方根。刚开始我以为函数写的有问题,于是我把函数改为这样:

v2 := sqrt(-2 * ln(v1));

竟然顺利执行成功了。

<mysql:5.6.25:SYS>  create or replace function tt return number is->  v1 number;->  v2 number;->  begin->    v1 := 10;->    v2 := sqrt(-2 * ln(v1));->    return v2;->  end;->  /
Query OK, 0 rows affected (0.050 sec)

直到最后经过和 Oracle 环境的对比,我才发现是 PLSQL 分隔符的问题。OceanBase 的 Oracle 租户里默认 PLSQL 的分隔符是/,刚好和除法/冲突,这样遇到除法符号就以为是函数定义结束,所以报语法错误。

那正确的写法应该是改变默认分隔符为//: 改分隔符后的函数创建成功。

<mysql:5.6.25:SYS>delimiter //
<mysql:5.6.25:SYS>  create or replace function tt return number is->  v1 number;->  v2 number;->  begin->    v1 := 10;->    v2 := sqrt(-2 * ln(v1)/v1);->    return v2;->  end;->  //
Query OK, 0 rows affected (0.114 sec)

特此分享给使用 OceanBase 的同学。

http://www.jmfq.cn/news/5068099.html

相关文章:

  • 如何在百度上找网站/云南百度推广开户
  • java做网站6/谷歌的推广是怎么样的推广
  • 老李网站建设/百度指数功能模块
  • 做英语四级题的网站/公众号微博seo
  • 培训网站网站建设/app拉新推广平台渠道
  • 东圃手机网站建设电话/安年软文网
  • 如何生成网站的二维码/百度官方推广
  • 做搜狗手机网站优化点/怎么优化网站关键词排名
  • 找人做网站会给源代码吗/百度推广客服
  • 做网站建设的电销/魔贝课凡seo课程好吗
  • 巴州移动网站建设/石家庄seo网站排名
  • 哪些网站容易收录/360网站推广费用
  • server2008 iis 网站/软文发布
  • 旅游电子商务网站的建设方案/深圳网络推广方法
  • 专业做网站路桥/it培训课程
  • 门源县电子商务网站建设公司/平台推广公司
  • 东莞竞价推广/seo搜索引擎优化的内容
  • 上海互联网企业100强/深圳关键词优化软件
  • 网站首页设计/推广普通话标语
  • 电子商务网站设计方案/东莞搜索网络优化
  • 南充做网站多少钱/网页制作培训教程
  • 专业网站设计服务/无锡网站制作优化
  • 一级a做爰精免费网站/链接推广
  • 网络推广理论做网站好不好/营销技巧和话术
  • 宁波网站推广优化公司怎么样/凡科网站建站教程
  • 做盗版电影网站犯法不/百度识图网页版
  • 长春市建设厅网站/百度网页版下载安装
  • 网站首页倒计时功能怎么做/网站开发的步骤
  • 下沙做网站的公司/爱站工具包的主要功能
  • wordpress后台添加一级菜单/深圳优化公司找高粱seo服务