匿名块的基本语法结构包括声明和执行两部分。匿名块每次提交都被重新编译和执行。因为匿名块没有名称并不在数据库中存储,所以匿名块不能直接从其他PL/SQL 块中调用。

定义语法:

[ DECLARE ]
[ variable_declaration ]
[ cursor_declaration ]
BEGIN
sequence_of_statement
END

  

说明:

a. 声明部分 :类似于存储过程中的声明,预先定义块中要用到的变量。包含PL/SQL 变量,异常,游标等。如果没有变量需要定义,声明部分可以省略。

b. 执行部分: 以BEGIN 开始,以END 结束,不可省略。类似于存储过程中的执行块。

在使用过程中oracle数据库的匿名块可以通过 &var形式来动态接收参数输入, KingbaseES也能实现动态输入参数,但是相对麻烦一些,参数需要通过ksql命令来传入。

Oracle:

SQL> set serveroutput on;
SQL> DECLARE
num1 NUMBER;
num2 NUMBER;
calResult NUMBER;
BEGIN
num1:=&n1;
num2:=&n2;
calResult:=num1+num2;
dbms_output.put_line(num1||'+'||num2||'='||calResult);
END;
/ Enter value for n1: 3
old 6: num1:=&n1;
new 6: num1:=3;
Enter value for n2: 4
old 7: num2:=&n2;
new 7: num2:=4;
3+4=7 PL/SQL procedure successfully completed.

KingbaseES:

需要将匿名块保存为脚本,通过ksql命令来调用。

[kingbase@singlekbdb ~]$ vi 1.sql

\set SQLTERM /

DECLARE
v_date date;
BEGIN
select nd into v_date from t2 where id = :id;
raise notice 'time is %',v_date;
END;
/ [kingbase@singlekbdb ~]$ ksql -Usystem -p54321 test -v id=2 -c '\i 1.sql;'
ksql:1.sql:9: 注意: time is 2020-09-18 00:00:00
ANONYMOUS BLOCK

  

KingbaseES 匿名块如何传递参数的更多相关文章

  1. Net线程足迹 传递参数至线程

    方法一:应用ParameterizedThreadStart这个委托来传递输入参数,这种方法适用于传递单个参数的情况. using System; using System.Collections.G ...

  2. 使用匿名函数给setInterval()传递参数

    在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的.这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来 ...

  3. 利用call与apply向函数传递参数

    Js中函数对象都有call与apply两个方法属性,二者使用方法和功能一样,只是传递参数的格式不同,call逐个传递单个参数,apply一次性传递一个参数数组. 这两个方法可以改变函数的调用对象,并且 ...

  4. .net中常用的几种页面间传递参数的方法

    转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...

  5. Android解惑 - 为什么要用Fragment.setArguments(Bundle bundle)来传递参数(转)

    Fragment在Android3.0开始提供,并且在兼容包中也提供了Fragment特性的支持.Fragment的推出让我们编写和管理用户界面更快捷更方便了.   但当我们实例化自定义Fragmen ...

  6. setInterval(code, time)中code传递参数办法

    1.使用setInterval的场景 有时我们需要隔一定的时间执行一个方法,这时就会用到setInterval,但是由于这个方法是浏览器模拟出的Timer线程,在调用我们方法时不能为其传递参数. 2. ...

  7. 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限

     1  Broadcast是Android中的四大组件之一,他的用途很大,比如系统的一些广播:电量低.开机.锁屏等一些操作都会发送一个广播. 2  广播被分为两种不同的类型:"普通广播( ...

  8. Oracle_PL/SQL(1) 匿名块

    1. PL/SQL 简介PL/SQL是一种比较复杂的程序设计语言, 用于从各种环境中访问Oracle数据库.为什么使用PL/SQL?Orade是一种关系型数据库, 用来访问关系型数据库的语言是 “结构 ...

  9. Shell 学习笔记之传递参数

    传递参数 设置权限 chmod +x file.sh 传递参数 ./file.sh parameter1 ... 特殊字符 $# 传递到脚本的参数个数 $* 以一个单字符串的形式显示所有向脚本传递的参 ...

随机推荐

  1. CVPR2022 | 可精简域适应

    前言 在本文中,作者引入了一个简单的框架,即Slimmable Domain Adaptation,以通过权重共享模型库改进跨域泛化,从中可以对不同容量的模型进行采样,以适应不同的精度效率权衡.此外, ...

  2. SAP创建XML 文件

    TYPES: BEGIN OF xml_line_type, data(256) TYPE x, END OF xml_line_type, xml_tab_type TYPE TABLE OF xm ...

  3. Python递归函数的定义和几个小例子

    递归函数 (1)什么是递归函数? 我们都知道,一个函数可以调用其他函数.如果这个函数在内部调用它自己,那么这个函数就叫递归函数. (2)递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 ...

  4. 通过Go语言创建CA与签发证书

    本篇文章中,将描述如何使用go创建CA,并使用CA签署证书.在使用openssl创建证书时,遵循的步骤是 创建秘钥 > 创建CA > 生成要颁发证书的秘钥 > 使用CA签发证书.这种 ...

  5. Codeforces Round #790 (Div. 4) A-H

    Codeforces Round #790 (Div. 4) A-H A 题目 https://codeforces.com/contest/1676/problem/A 题解 思路 知识点:模拟. ...

  6. Oracle Database 19c (19.3)

    https://www.oracle.com/database/technologies/oracle19c-windows-downloads.htmlOracle Database 19c (19 ...

  7. Hashtable集合 --练习题_计算一个字符串中每个字符出现次数

    Hashtable集合 java.util.Hashtable<K,V>集合 implements Map<K,V>接口  Hashtable:底层也是一个哈希表,是一个线程安 ...

  8. Kafka Topic Partition Offset 这一长串都是啥?

    摘要:Offset 偏移量,是针对于单个partition存在的概念. 本文分享自华为云社区<Kafka Topic Partition Offset 这一长串都是啥?>,作者: gent ...

  9. dijkstra最短路算法(堆优化)

    这个算法不能处理负边情况,有负边,请转到Floyd算法或SPFA算法(SPFA不能处理负环,但能判断负环) SPFA(SLF优化):https://www.cnblogs.com/yifan0305/ ...

  10. 第五天python3 内建函数总结

    id()  返回对象在内存中的地址 hash() 返回对象的hash值 type() 返回对象的类型 float() int() bin() hex() oct() bool() list() tup ...