Oracle
CREATE OR REPLACE PROCEDURE a_test AS t_sql VARCHAR2(2000); t_a VARCHAR2(20); t_b VARCHAR2(20); t_c VARCHAR2(20); t_d VARCHAR2(20); BEGIN t_c := 'f'; t_d := 'g'; --这里可为insert 等任何sql语句. t_sql := 'SELECT MAX(a), MAX(b) FROM t1 WHERE c = :tempC OR c = :tempD'; EXECUTE IMMEDIATE t_sql INTO t_a, t_b --如果不需要查询赋值,这里不用写 INTO XXX语句. USING t_c, t_d -- 如果不需要使用变量,不用写USING XXX语句. ; END a_test; /
--带返回游标的动态执行语句. CREATE OR REPLACE PROCEDURE a_test2 ( o_cursor OUT SYS_REFCURSOR ) AS t_sql VARCHAR2(2000); t_a VARCHAR2(20); t_b VARCHAR2(20); t_c VARCHAR2(20); t_d VARCHAR2(20); BEGIN t_c := 'f'; t_d := 'g'; --这里可为insert 等任何sql语句. t_sql := 'SELECT * FROM t1 WHERE c = :tempC OR c = :tempD'; OPEN o_cursor FOR t_sql USING t_c, t_d -- 同样如果不需要使用变量,不用写USING XXX语句. ; END a_test2; /
SQL Server
CREATE PROCEDURE a_test AS DECLARE @t_sql NVARCHAR(2000); --sql server 动态语句要申明为NVARCHAR类型. DECLARE @t_a VARCHAR(20); DECLARE @t_b VARCHAR(20); DECLARE @t_c VARCHAR(20); DECLARE @t_d VARCHAR(20); BEGIN SET @t_c = 'f'; SET @t_d = 'g'; --这里可为insert 等任何sql语句. SET @t_sql = 'SELECT @tempA = MAX(a), @tempB = MAX(b) FROM t1 WHERE c = @tempC OR c = @tempD'; --不可在EXECUTE SP_EXECUTESQL后边拼接字符串 EXECUTE SP_EXECUTESQL @t_sql --如果不带参数,以下申明变量及传入参数都不需要写. --申明变量类型及出入参.必须一行写完,不能换行.(如果实在太长,可以放到一个NVARCHAR变量中保存,这里传入NVARCHAR变量) ,N'@tempA VARCHAR(20) OUT, @tempB VARCHAR(20) OUT, @tempC VARCHAR(20), @tempD VARCHAR(20)' -- 参数值. 传入变量的顺序要与申明变量的顺序一致, ,@t_a OUT, @t_b OUT, @t_c, @t_d ; END GO --sql server返回游标与普通的语句一样,直接将t_sql赋值成 select * from XXX 即可.
Db2
CREATE PROCEDURE a_test ( v_c VARCHAR(20) ) BEGIN DECLARE t_sql VARCHAR2(2000); DECLARE t_a VARCHAR2(20); DECLARE t_b VARCHAR2(20); DECLARE t_c VARCHAR2(20); DECLARE t_d VARCHAR2(20); -- FOR 后边的t_stmt要与下边的 prepare后的变量一致,其类型为 statement. DECLARE t_cur CURSOR FOR t_stmt; SET t_c = 'f'; SET t_d = 'g'; --这里可为insert 等任何sql语句. SET t_sql = 'SELECT MAX(a), MAX(b) FROM t1 WHERE c = :tempC OR c = :tempD'; --我目前在这里没找到其它方式来替代,只能使用游标读取: PREPARE t_stmt FROM t_sql; OPEN t_cur --如果不需要使用变量,不用写USING XXX语句. USING t_c, t_d ; FETCH t_cur INTO t_a, t_b; CLOSE t_cur; -- EXECUTE IMMEDIATE t_sql; -- 如果不需要使用游标、不需要using参数,只是简单执行一个动态sql时,可以直接此语句即可. END
/* 带游标返回的动态语句与普通语句一样,只是申明游标时,要申明返回类型的游标 并且在begin关键字之前需要插入: DYNAMIC RESULT SETS 1 LANGUAGE SQL */ CREATE PROCEDURE a_test2 ( v_c VARCHAR(20) ) DYNAMIC RESULT SETS 1 LANGUAGE SQL BEGIN DECLARE t_sql VARCHAR2(2000); DECLARE t_a VARCHAR2(20); DECLARE t_b VARCHAR2(20); DECLARE t_c VARCHAR2(20); DECLARE t_d VARCHAR2(20); -- FOR 后边的t_stmt要与下边的 prepare后的变量一致,其类型为 statement. DECLARE t_cur CURSOR WITH RETURN FOR t_stmt; SET t_c = 'f'; SET t_d = 'g'; --这里可为insert 等任何sql语句. SET t_sql = 'SELECT MAX(a), MAX(b) FROM t1 WHERE c = :tempC OR c = :tempD'; PREPARE t_stmt FROM t_sql; OPEN t_cur --如果不需要使用变量,不用写USING XXX语句. USING t_c, t_d ; END
相关推荐
4.3.1 ORACLE动态SQL语句的一些特点 72 4.3.2 使用动态SQL的四种方法 72 4.3.3 SQLDA 75 第五节INFORMIX的嵌入SQL/C语言 89 5.1 一个简单的入门例子 89 5.2 宿主变量 91 5.3 嵌入SQL的处理过程 96 5.4 动态SQL语言 ...
4.3.1 ORACLE动态SQL语句的一些特点 72 4.3.2 使用动态SQL的四种方法 72 4.3.3 SQLDA 75 第五节INFORMIX的嵌入SQL/C语言 89 5.1 一个简单的入门例子 89 5.2 宿主变量 91 5.3 嵌入SQL的处理过程 96 5.4 动态SQL语言 ...
4.3.1 ORACLE动态SQL语句的一些特点72 4.3.2 使用动态SQL的四种方法72 4.3.3 SQLDA75 第五节INFORMIX的嵌入SQL/C语言89 5.1 一个简单的入门例子89 5.2 宿主变量91 5.3 嵌入SQL的处理过程96 5.4 动态SQL语言...
10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...
4.3.1 ORACLE动态SQL语句的一些特点72 4.3.2 使用动态SQL的四种方法72 4.3.3 SQLDA75 第五节INFORMIX的嵌入SQL/C语言89 5.1 一个简单的入门例子89 5.2 宿主变量91 5.3 嵌入SQL的处理过程96 5.4 动态SQL语言96 5.4.1 ...
内容概要:介绍几种经常使用的数据库,如MySQL,mssql,Oracle,DB2,...能学到什么:了解几种数据库的使用和底层原理,以及SQL语句的语法,示例。以及数据库表,视图,函数,索引等,以及经常碰到的数据库问题的处理
1.4.3.1 ORACLE动态SQL语句的一些特点 88 1.4.3.2 使用动态SQL的四种方法 88 1.4.3.3 SQLDA 91 1.5 第五节INFORMIX的嵌入SQL/C语言 107 1.5.1 一个简单的入门例子 107 1.5.2 宿主变量 109 1.5.3 嵌入SQL的处理过程 ...
1.4.3.1 ORACLE动态SQL语句的一些特点 88 1.4.3.2 使用动态SQL的四种方法 88 1.4.3.3 SQLDA 91 1.5 第五节INFORMIX的嵌入SQL/C语言 107 1.5.1 一个简单的入门例子 107 1.5.2 宿主变量 109 1.5.3 嵌入SQL的处理过程 ...
经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制...
10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1...
经典SQL语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice ...
JDBC(Java数据库连接性):是以Java编写的一组类和接口(API),可将SQL语句发送到任何关系数据库,例如:MySQL,PostgreSQL,SQL Server,Oracle,DB2 IBM等。 SQL表: CREATE TABLE public .carro( numero_...
1.6. DB2实现类型ORACLE的一些功能 29 1.7. 字符数据类型转换的时候需要注意的问题(原) 30 1.8. 本地谓词的使用注意(原) 31 1.9. windows/Linux或Unix下查看DB2端口号 31 1.10. 尽量让fetch first n row only或者...
本书不仅介绍了各种类型Pro*C/C++应用的开发方法,而且还介绍了Oracle 11g在Pro*C/C++方面所提供的各种新特征,包括使用大纲固定执行计划、DB2数组插入和数组提取、隐含缓冲区插入、动态SQL语句缓存等。通过学习本书...
第3章讲述了基本的SQL语句,介绍了定义数据的基本SQL语句,如SQL SELECT语句和数据修改语句。本书并不介绍高级的SQL语句,只讲述基本语句。 接下来的两章讨论了数据库设计。第4章使用实体-关系(E-R)模型解决数据建模...
本文详细地介绍了“万能数据库查询分析器”,中文版本《DB 查询分析器》、英文版本《DB Query Analyzer》6.03 来方便地创建DB2函数。...另外,本示例还适用于SQL语句要以逗号来分隔的数据库系统(如ORACLE)。
直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle ...
本书不仅介绍了各种类型Pro*C/C++应用的开发方法,而且还介绍了Oracle 11g在Pro*C/C++方面所提供的各种新特征,包括使用大纲固定执行计划、DB2数组插入和数组提取、隐含缓冲区插入、动态SQL语句缓存等。 通过学习...
可用于Oracle、SqlServer、Sybase、DB2、MySQL、Access、SQLite、PostgreSQL、DM(达梦)、PowerDesigner文件、Informix、Firebird、MaxDB、Excel等和OleDb、ODBC连接的数据库并可自定义,详见文档及安装文件的示例和...
8、查看DB2存储过程源代码的SQL 380 9、获取建表脚本 380 10、获取DB2数据库日志操作方法 380 二十一、LINUX相关 383 1、从命令模式切换到视图模式 383 二十二、TDS相关 383 1、LINUX下启动TDS管理界面 383 2、LINUX...