动态SQL是在运行时生成和执行SQL语句的编程方法。动态是和静态相对而言的。静态SQL指的是在代码编译时刻就已经包含在代码中的那些已经充分明确的固定的SQL语句。
PL/SQL提供了两种方式来编写动态SQL:
- 本地动态SQL,一个PL/SQL语言结构用于构建和指定动态SQL语句。
- DBMS_SQL包,一个API用户构建、执行和描述动态SQL语句。
本地动态SQL代码比同等代码使用DBMS_SQL包更容易读和写,运行数据更快。然而,编写本地动态SQL,你必须知道在运行时动态SQL语句的输入和输出的变量类型和数量。如果在运行你不知道这种信息,就必须使用DBMS_SQL包。
下面主要介绍本地动态SQL语句的语法。
1.EXECUTE IMMEDIATE语句
1.1语法
execute_immediate_statement::=
into_clause::=
bulk_collect_into_clause::=
using_clause::=
dynamic_returning_clause::=
into_clause::=
bulk_collect_into_clause::=
1.2关键字和参数描述
一个传递到动态SQL语句的表达式值(IN绑定),或是一个存储动态SQL语句返回值的变量(OUT绑定)。
如果使用仅当动态SQL语句可以返回多行,此子句指定一个或多个集合存储返回行。该子句必须有一个相应的兼容型集合或数组来存储动态SQL语句的查询列。
一个声明的集合,用来存储动态SQL语句返回行。
如果使用仅当动态SQL语句有RETURNING INTO子句,这个子句返回动态SQL语句受影响行的列值,独立变量或记录。该子句可以包括OUT绑定参数。
一个字符串常量,字符串变量,或表示SQL语句的字符串表达式,必须是CHAR、VARCHAR2或者CLOB类型。
返回行数组进行存储,该数组必须声明一个PL / SQL主机环境中,并传递给PL/ SQL绑定参数(冒号(:)前缀)
绑定参数的参数模式,IN绑定参数传递值到动态SQL语句,OUT绑定参数存储动态SQL语句返回值。IN OUT绑定参数传递初始值到动态SQL语句,并存储动态SQL语句返回值。默认绑定参数的参数模式是IN。
当且仅当动态SQL语句是一个SELECT语句,最多可以返回一行。此子句指定变量或记录存储返回行的列值。对于每个动态SQL语句查询列,必须有相应的自定义变量兼容类型和记录兼容类型。
存储返回行的用户自定或%rowtype记录。
当且仅当动态SQL语句包含占位符,指定绑定参数列表。
使用事项:
对于有RETURNING
子句的DML语句,你可以把OUT绑定参数放到RETURNING
INTO
子句中,无需指定参数模式。如果同时使用USING子句和RETURNING
INTO
子句,USING子句只能包含IN参数。
绑定参数值不能是布尔字面量(TRUE,FALSE,NULL)。如果想要传递NUL值到动态SQL,可以使用未初始化变量。
2.OPEN FOR语句
OPEN-FOR语句执行游标变量相关的SELECT语句。
2.1.语法
open_for_statement ::=
using_clause::=
2.2.关键字和参数描述
当前作用域内已申明的游标变量或者无返回类型的游标参数。
- host_cursor_variable_name
必须在PL/SQL主机环境已被申明,并通过PL/SQL作为绑定参数的游标变量。游标变量的数据里类型必须兼容任何PL/SQL游标变量的返回类型。
一个字符串常量,字符串变量,或字符串表达式,表示多行的SELECT语句(不包括最后的分号)与cursor_variable_name相关。它必须是类型为CHAR,VARCHAR2,CLOB(NCHAR或NVARCHAR2)。
一个字符串常量,字符串变量,或字符串表达式,表示任何SQL语句。它必须是类型为CHAR,VARCHAR2,CLOB。、
当且仅当select_statment包括占位符,此子句指定绑定参数列表。
一个传递到动态SQL语句的表达式值(IN绑定),或是一个存储动态SQL语句返回值的变量(OUT绑定)。默认绑定参数模式是IN。
分享到:
相关推荐
动态sql语句基本语法 1 :普通SQL语句可以用Exec执行 例: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,...
学习SQL应知道的动态SQL语句基本语法 学习SQL应知道的动态SQL语句基本语法 学习SQL应知道的动态SQL语句基本语法 学习SQL应知道的动态SQL语句基本语法
sql语句、动态SQL语句基本语法,里面有很多很有用的sql语句。
SQL语句语法,合适需要入门的同学学习,很基础的内容,需要可以下载。
学习SQL应知道的动态SQL语句基本语法 mssql
学习SQL 应知道的动态SQL 语句基本语法学习SQL 应知道的动态SQL 语句基本语法
数据库基础 sql 语句 语法 编程 ,数据库基础 sql 语句 语法 编程 。
SQL语句语法(最新)SQL语句语法(最新)
动态SQL语句基本语法,這個是學習sql动态SQL语句的入門好書。
提供详细的sql语句,常用sql语句,sql语句的进阶过程
学习SQL应知道的动态SQL语句基本语法学习SQL应知道的动态SQL语句基本语法
oracle的sql语句和语法,初学者用用还不错,了解oracle的一些用法
结构化查询语言SQL(STRUCTURED QUERY LANGUAGE)是最重要的关系数据库操作语言,本文档包括sql语句相关语法和例子,总结版
介绍了SQL标准语法以及一些SQL语句介绍了SQL标准语法以及一些SQL语句介绍了SQL标准语法以及一些SQL语句介绍了SQL标准语法以及一些SQL语句介绍了SQL标准语法以及一些SQL语句
SQL语句基本语法,各种基本的一些增删改查等.
2. 权限-- 显示权限信息SHOW GRANTS FOR your_username@'localhost'; -- 授予权限GRANT some_privileges ON some_databases(some_tables) TO some_users@'localhost'; -- 撤销权限REVOKE some_privileges ON some_...
达梦8数据库操作语法
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。