动态SQL(Dynamic SQL)
----start
动态SQL是在程序运行时构造的,要执行单条SQL,使用EXECUTE IMMEDATE 语句;当批量执行SQL时,先使用PREPARE 语句构造SQL,然后使用EXECUTE 语句执行。
一:Prepare语句:用来构造批量SQL
语法:
PREPARE <sql-statement> [OUTPUT] INTO <result> [INPUT INTO] <input> from <variable>
二:DESCRIBE语句:获取表、SQL等数据库对象的描述信息
语法:
>>-DESCRIBE----------------------------------------------------->
.-OUTPUT-.
>--+-+--------+--+-select-statement---------+--------------------------------+-><
| +-call-statement-----------+ |
| '-XQUERY--XQuery-statement-' |
'-+-TABLE----------------------------------+--table-name--+-------------+-'
+-+-----------------+--INDEXES FOR TABLE-+ '-SHOW DETAIL-'
| +-RELATIONAL DATA-+ |
| +-XML DATA--------+ |
| '-TEXT SEARCH-----' |
'-DATA PARTITIONS FOR TABLE--------------'
三:Execute语句:用来执行批量SQL,不能执行select语句
语法:
EXECUTE <statement-name> [INTO <result-variable>] [USING <input-variable> [,<input-variable>,...] ]
四:Execute Immediate语句:用来执行单条SQL语句,不能执行select语句
语法:
EXECUTE IMMEDIATE <sql-statement>
五:示例
--连接数据库
CONNECT TO SAMPLE!
--创建表
CREATE TABLE TESTTB(A INT, B INT)!
--删除存储过程
DROP PROCEDURE TEST!
--创建存储过程
CREATE PROCEDURE TEST (IN V1 INT, IN V2 INT)
BEGIN
DECLARE STMT VARCHAR(50);
DECLARE ST STATEMENT;
--静态SQL
INSERT INTO TESTTB VALUES (1,1);
--动态SQL(单条语句)
SET STMT='INSERT INTO TESTTB VALUES (' ||
相关文档:
1)PL/SQL数据类型
名称
类型
说明
NUMBER
数字型
能存放整数值和实数值,并且可以定义精度和取值范围
BINARY_INTEGER
数字型
可存储带符号整数,为整数计算优化性能
DEC
数字型
NUMBER的子类型,小数
DOUBLE PRECISION
数字型
NUMBER的子类型,高精度实数
INTEGER
数字型
NUMBER的子类型,整数
INT
数 ......
一、 简单查询
简单的Transact-SQL查询只包括选择列表、from子句和WHERE子句。它们分别说明所查询列、查询的
表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
from testtable
WHERE name='张三'
(一) 选择列表
选择列表 ......
/*
标题:普通行列转换(version 2.0)
作者:爱新觉罗.毓华
时间:2008-03-09
地点:广东深圳
说明:普通行列转换(version 1.0)仅针对sql server 2000提供静态和动态写法,version 2.0增加sql server 2005的有关写法。
问题:假设有张学生成绩表(tb)如下:
姓名 课程 分数
张三 语文 74
张三 数学 83
张三 物理 93 ......