动态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 (' ||
相关文档:
Oracle数据库
SELECT
*
from
(
SELECT
ROWNUM AS NO_ROW
,row_.*
from
(
SELECT
&nb ......
一、 简单查询
简单的Transact-SQL查询只包括选择列表、from子句和WHERE子句。它们分别说明所查询列、查询的
表或视图、以及搜索条件等。
例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
SELECT nickname,email
from testtable
WHERE name='张三'
(一) 选择列表
选择列表 ......
SQL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname ......
1用于排序的函数
row_number()
rank()
dense_rank()
ntile(group_number)
下面列举这个函数的用法:
row_number()函数一般用于组内排序,而其他三个函数是对结果集排序
例子:分页排序
<!--注意全局变量也在这里声明,并用逗号隔开-->
create proc MyDividePageSort @iRowCount int ,@iPageNo int
AS
< ......
1.按姓氏笔画排序:
Select * from TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as
2.数据库加密:
select encrypt('原始密码')
select pwdencrypt('原始密码')
select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')
select pwdencrypt('原始密码')
select pw ......