Proc *常用SQL句式小结
1.凡是先把SQL语句存储在宿主字符串变量中然后再执行的SQL语句,都必须先分析后执行(是为了分析识别出SQL语句中的宿主变量)
2.SQL语句存储在宿主字符串变量中与SQL语句自身含有虚拟宿主变量是两个不同的概念
@@@@@@@@@@@@@@@@@@@@@@@@[SELECT语句]@@@@@@@@@@@@@@@@@@@@@@@
EXEC SQL
SELECT 字段列表
INTO 宿主变量列表
FROM 表名
WHERE 字段1 = :宿主变量1 AND ...;
---------------------------------------------------
SELECT 字段列表 FROM tlxwtsywh where product like nvl(trim(''),'%') ...
与
SELECT 字段列表 FROM tlxwtsywh where product like nvl(trim(' '),'%') ...
的效果完全相同
---------------------------------------------------
SELECT 字段列表
FROM 表名
WHERE 字段1 like nvl(trim(:宿主变量1),'%') and 字段2like nvl(trim(:宿主变量1),'%') and ...
---------------------------------------------------
SELECT 字段列表
FROM 表名
WHERE 字段1 like '%'||nvl(trim(:宿主变量1),'%') and ...
注:||表示连接两个字符串
---------------------------------------------------
SELECT 字段列表
FROM 表名
WHERE 字段1 like ('%'||nvl(trim(' '),'%')) and ...
---------------------------------------------------
SELECT 字段列表
FROM 表名
WHERE 字段1 like ('%'||trim(' ')||'%') and ...
---------------------------------------------------
SELECT 字段列表
FROM 表名
WHERE 字段1 like ('%'||nvl(trim(:宿主变量1),'%')) and 字段2 like '%'||nvl(trim(:宿主变量1),'%') and ...
---------------------------------------------------
sprintf(保存SQL字串的宿主变量,"SELECT 字段列表 "
"FROM 表名 "
"WHERE 字段名1 LIKE '%'||nvl(trim(%%s%%),'%') AND 字段名2=%d AND ..."
,字符变量1,整型变量2,...);
---------------------------------------------------
EXEC SQL
DECLARE 游标变量_cur CURSOR FOR
SELECT 字段列表
FROM 表名
WHERE 字段1=:宿主变量1 and 字段2=:宿主变量2,...
EXEC SQL OPEN 游标变量_cur;
where(1)
{
EXEC SQL WHENEVER NOT FOUND DO BREAK;
EXEC SQL FETCH 游标变量_cur INTO 宿主变量列表;
}
EXEC SQL CLOSE 游标变量_cur;
注:where循环的判断条件的写法有多种:
比如,1==1,1等
---------------------------------------------------
sprintf(保存SQL字串的宿主变量,"SELECT 字段列表 "
"FROM 表名 "
"WHERE 字段名1 LIKE '%%%s%%' AND 字段名2=%d AND ..."
,变量1,变量2,...);
EXEC SQL PREPARE 动态解析名 FROM :保存SQL字串的宿主变量;
EXEC SQL DECLARE 游标变量_cur CURSOR FOR 动态解析名;
EXEC SQL OPEN 游标变量_cur;
where(1)
{
EXEC SQL WHENEVER NOT FOUND DO BREAK;
EXEC SQL FETCH 游标变量_cur INTO 宿主变量列表;
}
EXEC SQL CLOSE 游标变量_cur;
---------------------------------------------------
/* 动态方法4 */
@@@@@@@@@@@@@@@@@@@@@@@@[UPDATE语句]@@@@@@@@@@@@@@@@@@@@@@@
sprintf(SQL字串宿主变量, "update 表名 set 字段1 = :宿主变量1 where 字段2 = :宿主变量2");
EXEC SQL PREPARE 动态解析名 FROM :SQL字串宿主变量;
EXEC SQL EXECUTE 动态解析名 USING :宿主变量1, :宿主变量2;
---------------------------------------------------
posted on 2010-08-06 16:11 LeeXiaoLiang 阅读(398) 评论(0) 收藏 举报
浙公网安备 33010602011771号