暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 动态语句

墨天轮 2019-10-12
574

动态语句

功能描述

动态语句是指可以动态构造出的SQL语句。动态语句在执行阶段才进行编译执行。

语法格式

EXECUTE IMMEDIATE sql_statement [ INTO variant_name[, ...] ] [ USING { [IN] [OUT] variant_name } [, ...] ]

参数说明

  • EXECUTE IMMEDIATE

    动态下发SQL语句。

  • sql_statement

    需要动态下发的SQL语句。存储过程目前支持直接使用七个SQL语句,分别为UPDATE、INSERT、DELETE、MERGE、SELECT ... INTO、COMMIT和ROLLBACK。其他SQL语句不能直接下发,必须通过动态SQL方式(EXECUTE IMMEDIATE)下发,否则会在存储过程编译时报错。

  • INTO

    把查询结果存放到变量中。使用INTO子句时,sql_statement必须是SELECT语句,并且该语句返回的结果集中只有一条记录。SELECT子句的字段个数需与INTO子句的变量个数一致。

  • USING

    USING子句的变量和sql_statement绑定参数的个数和数据类型必须一致。

示例

SQL> SET serveroutput ON; ON SQL> DECLARE SQL> a INT; SQL> b CHAR(16); SQL> c VARCHAR(16); SQL> BEGIN SQL> a := 10; SQL> b := 'abc'; SQL> c := 'efc'; SQL> EXECUTE IMMEDIATE 'BEGIN dbms_output.put_line(''a=''||:x);dbms_output.put_line(''b=''||:y);dbms_output.put_line(''c=''||:z); :x := 11; :y := ''aaa''; :z := ''bbb'';END;' USING OUT a, OUT b, OUT c; SQL> DBMS_OUTPUT.PUT_LINE('a='||a); SQL> DBMS_OUTPUT.PUT_LINE('b='||b); SQL> DBMS_OUTPUT.PUT_LINE('c='||c); SQL> END; SQL> / a= b= c= a=11 b=aaa c=bbb PL/SQL procedure successfully completed.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论