KingbaseES 匿名块如何传递参数
匿名块的基本语法结构包括声明和执行两部分。匿名块每次提交都被重新编译和执行。因为匿名块没有名称并不在数据库中存储,所以匿名块不能直接从其他PL/SQL 块中调用。
定义语法:
1 2 3 4 5 6 | [ DECLARE ] [ variable_declaration ] [ cursor_declaration ] BEGIN sequence_of_statement END |
说明:
a. 声明部分 :类似于存储过程中的声明,预先定义块中要用到的变量。包含PL/SQL 变量,异常,游标等。如果没有变量需要定义,声明部分可以省略。
b. 执行部分: 以BEGIN 开始,以END 结束,不可省略。类似于存储过程中的执行块。
在使用过程中oracle数据库的匿名块可以通过 &var形式来动态接收参数输入, KingbaseES也能实现动态输入参数,但是相对麻烦一些,参数需要通过ksql命令来传入。
Oracle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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命令来调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | [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 |
KINGBASE研究院
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!