动态SQL语句在Powerscript脚本中的使用方法
能 强 大 的 过 程 性 处 理 路 高 , 在 应 种 执 行 方 式 都 有 其 特 定 的 适 用 范 ‘ 用 丌 发 t , 常 常 将 它 们 I 者 结 合 围 。 l I 从 j
一
编 译 会 提 示 非 法 字 符 串 , 正
下程 序 段 代 替
( 为 v Str
一
o rci 字 p : 其 巾 S s ae n 表 示 一 合 P wes r t 符 串变 量 ) QL tt me t
vsr “ ump d tba ed s l : t- d a a s ba e ”
EX ECU TE I M ED I TE : t ; M A vsr
1 X E U 2 : lE
IM M 匕 I A : JI l1 2
“ um p da a a e d s ” d t b s ba e1 :
脚 小 l 的 S , 仃 “ 态 ” 和 f l QL u J 静
这 种 动 态 方 式 可 以 用 于 除
也 可 以 先 将 具 体 语 句 赋 给 一
: 。 f 时 骼 个 语 , 就 已 确 定 的 S 集 ,其 常 用 语 法 为 :ExECUT E 前 冠 与 “ ” 上 面 的 语 句 可 用 以 序 口 J QL
i u;所 谓 “ 态 ” S , J 动 QL语 句 是 指 I M EDI M ATE S sa e n; 0L t tme t , 攻 其 参 数 任 编 瞬 时 无 法 确 u J
定 , 住 运 行 I 根 据 实 际 环 境 生 法 的 SQL语 句 字 符 串 ( 下 同 ) I 寸才 以 。 成的 S QL 语 , 。 对 于一 般 的 应 用 u J
从 理 沦 上 说 , 任 何 合 法 的 系统 ,采 用 “ 态 ” S 静 QL语 句 基 本 S QL语 , 都 可 以 在 P wes r t u J o rci 中 p
务 繁 杂 多变 、 灵 活 性 要 求 较 高 ,
t bl a e、 dr a e、 tunc t a e、 op t bl r a e t bl
句 只 能 使 用 动 态 方 式 。 例 如 , 假
仅 使 用 静 态 方 式 显 然 有 些 力 不 从 d mpd tb s ( be 、la aa a e 设 要 清 空 数 据 表 va , va u aa aet l) o dd tb s a tb而 tb不 是 心 , 这 时 必 须 使 用 它 的 动 态 形 ( be … . 等 在 P wesr t 如 真 正 的 表 名 , 它 是 个 变 量 , 它 t l a ) . 等 o rci 中 p 式 。动态 S QL浯 , 虽 然 比 较 复 杂 , u J
■
…
一
…
…
.
.
…
■—田蛋E■匿■固_
维普资讯
经
验
滴
下
v t- “ lt a e ” t b: sr dee et bl +v a
EX EC U TE I M ED I TE M A
果 以 静 态 的 形 式 出 现 是 无 法 通 过 代 表 的 具 体 的 表 名 必 须 在 程 序 实 似 它 I 以 大 大 提 高 应 用 系 统 的 灵 脚 本 编 译 的 , 编 译 器 会 将 它 们 看 际 运 行 时 才 可 确 定 , 对 பைடு நூலகம் 语 句 如 1 『 性 和 可 扩 允 性 , 减 少 程 序 兀 余 作 非 法 宁 符 , 这 时 只 能 采 用 动 态
维普资讯
经 验 点 藕
动 态 SQ 语 句 在 L
P o v e s ip r c r t
脚
本
中
的
使
用
方
法
SOL 足 一种 非 过 程 性 、 面 向
和 事 后 维 护 量 。 归 纳 起 来 , 动 态 方 式 。 例 如 , 假 设 你 要 任 程 序 中
S QL 住 P we s rp 巾 按 其 动 态 程 对 数 据 库 d a e o rc i t b s 1进 行 备 份 , 直 接
问 题 的 数 据 库 操 纵 沿 言 ,
P wc s rp o r c it
种 卣 对 象 、 功 度 的 不 同 有 四 种 执 行 方 式 , 每 一 使 用 以 下 静 态 的 语 句 :
“ 态 ” 之 分 ,昕 谓 “ 态 ” S S lc 之 外 的 任 何 S 动 静 QL ee t QL语 句 ,语 句 字 符 串 变 量 ,然 后 在 E E U E语 X C T 是 指 , 了 结 构 固 定 , 伍 编 译 中 不 能 包 含 参 数 , 不 会 产 生 结 果 句 中 引 用 它 , 此 时 必 须 在 该 变 量 u J
另外 ,如 果 被 处理 的 表 为 一
就 可 满 足 岐 计 要 求 , 不 需 使 用 其 以 “ 态 ” 方 式 使 用 , 但 实 际 并 变 量 , 在 编 译 时 无 法 知 道 具 体 表 静
QL 语 动 态形 式 ,但 如 果 针 对 的 应 用业 非 如 此 。 许多 S QL语 , ,如 c e t 名 , 这 时 任 何 作 用 于 它 的 S u J r a
确 的语 句 应 为 动 态 的 形 式 , 如 下 :
…
起 使 用 , 【 位 P wesr t ! p o rci 脚 p
X 曩 0 誓= -; 兰 曼 ≯
本t嵌 入 S l I QL 沿 , , 以 使 程 序 既 u J
仃 完 整 的 流 程 控 制 功 能 义 仃 强 大 的 数 操 纵 能 力 。 任 P owe s rpt rci
在PowerBuilder下使用动态SQL语句
在PowerBuilder下使用动态SQL语句PowerBuilder提供了四种格式的动态SQL语句, 每种格式都有自己不同的特点和作用。
下面我们对各种格式的具体使用方法分别加以说明。
(一)第一种格式当执行没有输入参数并且没有返回结果集的SQL语句时可以使用这种格式, 这种格式使用比较简单, 其实现的操作也比较少。
1 语法EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};其中SQLStatement是要执行的SQL语句, 可以直接用引号将要执行的SQL引起来用, 或者用字符串变量的形式提供SQL语句。
通过使用字符串变量可以在具体执行的时候才指定要执行什么样的SQL语句。
TransactionObject是用户所使用的事务对象, 缺省为SQLCA。
2 应用实例①建立一张数据库表(base), SQL语句的表述用引号引起来直接使用。
EXECUTE IMMEDIATE‘CREATE TABLE base(code char(6),name char(30))’USING SQLCA;②执行对数据库记录的操作, 在表base中插入一条记录, SQL语句通过字符串变量传递执行语句。
STRING lsSQLlsSQL=”INSERT INTO TABLE base value S(’320201’, ’市中区支行’)”EXECUTE IMMEDIATE :lsSQL;(二)第二种格式当执行带输入参数但没有返回结果集时的SQL语句可以采用第二种格式。
该格式不仅可以动态地指定要执行的SQL语句, 同时还可以动态地确定SQL语句所需要的参数值。
1 语法PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject};EXECUTE DynamicstagingArea{USING Parameterlist};其中 :DynamicstagingArea是PowerBuilder提供的一种数据类型。
power query sql语句
power query sql语句摘要:1.引言2.Power Query 简介3.Power Query 与SQL 的关系4.使用Power Query 进行数据查询5.使用Power Query 进行数据清洗6.使用Power Query 进行数据转换7.总结正文:Power Query 是Excel 和Power BI 中的一种数据处理工具,它允许用户连接、合并和转换各种来源的数据,从而为数据分析和可视化做好准备。
在Power Query 中,我们可以使用SQL 语句来查询和处理数据,这使得熟悉SQL 语言的用户可以更轻松地使用Power Query。
Power Query 与SQL 的关系Power Query 和SQL 之间有许多相似之处。
例如,它们都可以用于查询和处理数据,而且Power Query 中的“高级编辑器”允许用户直接编写SQL 语句。
然而,Power Query 的功能远远超出了SQL 的范围,它不仅支持SQL 语句,还支持从多个数据源中提取、合并和转换数据。
使用Power Query 进行数据查询在Power Query 中,我们可以使用SQL 语句来查询数据。
例如,如果我们想要从Excel 文件中查询数据,可以使用以下SQL 语句:```SELECT * FROM [Excel 文件名]```使用Power Query 进行数据清洗Power Query 不仅支持SQL 查询,还提供了一系列用于数据清洗和预处理的功能。
例如,我们可以使用Power Query 的数据清洗功能来删除重复项、填充缺失值、更改数据类型等。
使用Power Query 进行数据转换Power Query 还提供了丰富的数据转换功能,允许用户对数据进行各种操作,如拆分列、合并列、排序、筛选等。
这些功能可以帮助用户将原始数据转换为适合分析和可视化的格式。
总结总之,Power Query 是一种强大的数据处理工具,它允许用户连接、合并和转换各种来源的数据。
在PowerScript语言中直接调用SQL操作数据库的方式
在Pow e rSc r i p t语言中Ξ直接调用SQ L操作数据库的方式沈中林(新疆大学数学系, 乌鲁木齐830046)摘要讨论了在Pow e r B u ild 软件开发中, 用Pow e r Sc r i p t 语言直接调用SQ L语句完成对数据库操作的几种方式, 并通过举例说明每种方式的适用范围及注意事项, 对用Pow e r B u ilde r开发软件具有参考及作用指导1关键词Pow e r Sc r i p t S Q LPow e rB u ild 对数据库的操作即可以通过数据窗口完成( 本质上是数据窗口把在屏幕上对数据库的操作转化成SQ L 语句) , 又可以在Pow e rSc r i p t 语言中直接调用SQ L或存储过程( 本质上仍是SQ L 语句) 完成1 下面阐述在Pow e rSc r i p t 程序中调用SQ L 和存储过程的方式及其一些注意事项, 并给出简单的例子, 这对用Pow e rB u ild 开发软件具有参考及作用指导11 SEL EC T语句查询返回一行如果SQ L SEL EC T语句返回的结果只有一行, 可以在Pow e rSc r i p t 中书写以下的语句: SEL EC T列名1, 列名2, 列名3,I N TO :变量1, : 变量2, : 变量3,FROM表名1, 表名2, 表名3,W H ER E ;其中, ‛变量1‛, ‛变量2‛和‛变量3‛等都是Pow e r Sc r i p t 语言的变量1 该语句的作用是把数据库表的‛列名1‛, ‛列名2‛和‛列名3‛等列的值从数据库中取出, 然后放入对应的变量‛变量1‛, ‛变量2‛和‛变量3‛中1 例如:S t r i n g n a m e, ageSEL EC T n a m e, age I N TO : n a m e, : age FROM s tu d en tW H ER E s tu d en t co d e= ’199****1001’;该语句仅仅适合于查询到一条记录的情况, 如果查询到的记录是多条, 则要用下面的方法12查询多行SEL EC T 是描述型的语言, 它面向的是集合, 是一组记录1 而Pow e rSc r i p t 语言却是面向过程的, 它是一条条地接受并处理记录1Pow e rSc r i p t 通过描述型光标(C U R SO R ) 在这组记录上游动的方法, 给Pow e r Sc r i p t 语句逐个地传送记录, 建立了集合与记录间的内在联系1 请看Ξ收稿日期: 1999- 03- 20下例:S t r i n g n a m eS t r i n g V 1= ’1999% ’D ECL A RE C 1 C U R SO R FO RSEL EC T n a m e FROM s tu d en tW H ER E s tu d en t co d e L IK E: V 1∥定义光标, 光标名为C 1∥光标对应的SEL EC T语句∥SEL EC T语句中用到了变量V 1∥打开光标, 此时执行此光标对应的SEL EC T语句O P EN C 1;L ab 1:∥取记录, 光标下移一条∥取记录成功∥如果成功取出记录, 则取下一条F E T CH C 1I N TO : n a m e;If SQ L CA. SQ L C O D E = 0 T H ENGo to L ab 11999% ‛替换, 因此最后执行的SQ L SEL EC T语句为:1999% ’1 每执行一次语句:F E T CH C 1I N TO : n a m e;则取出一条记录送给变量n a m e, 然后光标移到下一条记录1 如果想控制查询结果的次序, 必须在SEL EC T语句中用O RD ER B Y 子句, 否则, 没有其他的办法1 我们不可能一下子把光标定位在某条记录上, 只能从第一条开始, 一个个地下移1在这里要注意光标带来的当前值的混乱现象1 在多个事务并发执行时, 事务的修改可能产生副作用, 使与光标有关的事务出错1 例如:事务T 1 在时刻t3 读出一条不满足条件的记录, 这种光标当前值的混乱不易发现, 但有时会导致严重的后果1我们在Syb a s e 上作如下实验1 第一个用户运行下面的程序:s t r i n g n a m ei n t I∥定义光标, 执行此光标对应的SQ L 语句D ECL A RE C 1 C U R SO R FO RSEL EC T n a m e FROM s tu d enW H ER E n a m e L IK E‘王% ’O P EN C 1;L ab 1:F E T CH C 1 I N TO : n a m e ; ∥取记录If SQ L C A 1SQ L C O D E = 0 T H ENIf n a m e = ‘王涛’T H ENDO W H I L E I < 10000I = I + 1L O O P ∥用循环来等待∥对‛王涛‛这条记录进行处理E n d ifGo to L ab 1E n d ifComm it ; ∥如果成功取出记录, 则取下一条此程序查询‛王涛‛这条记录时, 用一个循环等待 1 此时第二个用户用 Syb a s e 的 isq 1 修 改‛王涛‛这条记录:up d a t e s tu d en t se t n a m e= ’ 李涛 ’w h e r e n a m e= ’ 王涛‘gocomm itgo此时, ‛王涛‛已改为‛李涛‛, 已不具备光标查询时的查询条件: W H ER E n a m e L i k e ‘王% ’如果第一个用户的程序继续运行下去, 后果是难以预料的 1为了防止在光标查询到提交这段时间内其他用户修改表 s tu d en t 的内容, 对于数据库 Syb a s e, 上面的光标定义程序应写为:s t r i n g n a m ei n t I∥定义光标, 执行此光标对应的 SQ L 语句D ECL A RE C 1 C U R SO R FO R ∥持续共享锁直到事务完成SEL EC T n a m e FROM s tu d en t h o ld lock W H ER E n a m e L IK E‘王% ’ O P EN C 1;L ab 1:F E T CH C 1 I N TO : n a m eIf SQ L CA . SQ L C O D E = 0 T H ENIf n a m e = ‛王涛‛T H ENDO W H I L E I < 10000I = I + 1L O O P∥对‛王涛‛这条记录进行处理E n d IFGo to L ab 1E d IF∥提交事务, 释放 h o l d ba c k 所加的锁Comm it; 如果使用的是 O RA CL E 数据库, 应该用 SEL EC T fo r up d a t e 语句加锁当前光标操作3 当用光标取到某条记录后, 可以对这条记录进行修改和删除 1 下列是从表 s tu d en t 中查询记录, 如果姓名为‚王涛‛, 则删除‚王涛‛这条记录, 如果姓名为‚李涛‛则修改这条记录 1 S t r i n g n a m eS t r i n g V 1= ’1999% ’∥定义光标, 执行此光标对应的 SQ L 语句D ECL A RE C 1 C U R SO R FO RSEL EC T n a m e FROM s tu d en tW H ER E s tu d en t cod e L IK E : V 1; O P EN C 1;L ab 1:F E T CH C 1 I N TO : n a m eIf SQ L CA . SQ L C O D E = 0 T H EN If n a m e = ‛王涛‛T H END e l e t e F rom s tu d en t W H ERE C U R R EN T OF C 1;E n d IFIf n a m e= ‛李涛‛T h e nU p d a t e s tu d en t Se t n a t i o n a lity = ‚汉族‛W H ER E CU R R EN T O F C 1;E n d IfGo to L ab 1E n d If删除当前光标对应记录的语法为:D ELE T E FROM T ab l eN am e W H ER E C U R R EN T OF C u r s o rN am e ;修改当前光标对应记录的语法为:U PDA T E T ab l e N am e Se t S t a t em en t W H ER E CU R R EN T O F C u r s o r N am e ;其 中, T ab l eN am e 指要从中删除 ( 修改) 当前行的表名, C u r s o r N am e 指定义的光标名,Se t S t a tem en t 是 Se t 语句 (为 Co lum nN am e = V a l u e 序列) 1注意: 并不是所有的 DB M S 都支持 D EL E T E W H ER E CU R R EN T O F C u r s o r 删除光标所在行 1指示变量4 前面介绍了从数据库查询数据的方法, 如果取出的值有错, 或查出的数据为空, 则用前面的方法无法判断, 需要用指示变量来判定 1 这种判定方法与数据窗口的 SQ L C A 1SQ L C O D E的工作方式是完全一样的, 请看下例:∥指示变量i n t ex t r ac t i n d s t r i n g n a m e, ex t rac tSEL EC T n a m e, ex t rac t I N TO : n a m e, : ex t r ac t : ex t ra c t in d FROM s tu d en tW H ER E s tu d en t cod e= ’1999% ’; ∥正常返回∥返回的 ex t rac t 值为空 If ex t rac t i n d = 0 T H EN If ex t rac t i n d = 1 T H EN 在上面的例子中, 用了一个指示变量 ex t ra c t in d , 它放在它要指示的变量 ex t rac t 的后边,() r i p t 语句中含有 U p d a t e, In s e r t 和 D e l e te 语句, 则这些语句会与数据窗口对数据库的更新合成一 个事务, 处理起来要小心 1 在 Pow e rSc r i p t 程序中合理正确的调用 SQ L 数据库的操作轻松自如, 否则会适得其反 1语句, 会使得用户对 参 考 文 献1 宜晨主编 1Pow e r B u ilde r 5. 0ƒ6. 0 编程指南 1 人民邮电出版社, 199812 [ 美 ]D a r y l B ibe r do rf 等著 1 陈向群等译 1Pow e r B u ilde r 5 开发人员指南 1 机械工业出版社, 19971The D irec t W a y s of O pera t i n g D a ta b a se w ith SQ Lin PowerScr ip t L an gua g eS h en Z h on g l in(D ep a r tm en t o f M a th e m a t ic s X in jiang U n ive r sity , U rum q i X in jiang 830046)A bs tra c tT h is a r t ic le is co n ce rn ed w ith seve ra l d iff e ren t w ay s in com p le t in g da taba se p ro ce ss w ith SQ L d irec t l y. It g ive s ex am p le s to illu st ra t e th e d iffe ren t a sp ec t s in w h ich th ey w ill ap p licab le an d p o in t o u t th e ite m s th a t sho u ld be p a id a t t en t i o n to . It h a s som e refe ren ced an d in st ruc t ive va lue i n exp lo ita t i o n o f so f t w a r e w ith Pow e r B u ilde r .Key words PowerScr i p t SQL。
PowerBuilder中“动态查询”技术的实现
动 态查 询 是 在 窗 V中实 现 的 ,技 术 核 I 心都在窗 口的控件 当中。
一
F l t ilT p ,) T=e ( e y e4 fF d
cs t GeTe t) t x(
I c x Th n se 3 t x s . x +” f r e l .e t l 3 t t u e e
Ied me q l Na Ge Cou Na ( t l mn me ) I ed D =De ci eFil Na 十” l Tv e i s rb ( ed me .
拳 滢阍 l 0 一 l l |
鬻 |
萋 |
二 、 窗 口设 计
动 态 查询 ;数据 窗 口对 象 ;数 据 窗 口控 件
CoTy e ) l p ”
数据库应用系统 中数据的复杂查询 问 题, 长期困扰 着使用者和开发者。 本文介绍 这种查询 ,做出的查询窗 V使用方便、 灵 I 活 ,可挂 接 到 任 何 P weB i e 应 用 软 件 o r ul r d 中 , 而 大大 提 高 软 件 的开 发 效 率 , 系 统 从 使 功能更加丰富 。 采用的关键技术包括 :对数据窗 L中 】 = 任意字段指定查询内容 ,获取任意字段的 字段名和字段类型,数据库 中系统表信息 的利 用 ,动态 建立数 据窗 E对 象等 。 l 首先建立一个测试用的数据库 , 在数据 库 中可建立若干个用来测试的表。这里建 立 两 个 表 , 个 叫 t l 学 生信 息 表 ) 一 j ( z ,另一 个 n n x 教 师信 息 表 ) 以 上 数据 库 和表 q h x( 。 只 是 为 测试 下面 介 绍 的 查 询 模 块 和描 述 问 题方便而设置的。 其实 , 本查询模块可以对 任意数据库的任意表进行查询。
在PowerScript语言中直接调用SQL操作数据库的方式
在PowerScript语言中直接调用SQL操作数据库的方式沈中林
【期刊名称】《新疆大学学报(自然科学版)》
【年(卷),期】2000(017)001
【摘要】讨论了在PowerBuild软件开发中,用PowerScript语言直接调用SQL 语句完成对数据库操作的几种方式,并通过举例说明每种方式的适用范围及注意事项,对用PowerBuilder开发软件具有参考及作用指导.
【总页数】5页(P28-32)
【作者】沈中林
【作者单位】新疆大学数学系,乌鲁木齐,830046
【正文语种】中文
【中图分类】TP3
【相关文献】
1.Turbo C语言直接调用Foxbase+数据库 [J], 李鸿
2.PHP中基于MySQLi类操作MySQL数据库的实现 [J], 郭灿杰
3.PHP中基于MySQLi类操作MySQL数据库的实现 [J], 郭灿杰
4.高级语言对数据库文件的直接调用 [J], 陈年生
5.PHP中基于MYSQLI类操作MYSQL数据库的实现 [J], 郭灿杰
因版权原因,仅展示原文概要,查看原文内容请购买。
在PB中动态修改SQL语句
在PB中动态修改SQL语句数据库应用程序通常进行一项确定的工作,在编写和编译时就可以确定完整的SQL语句,但是在编译时不能确定SQL语句的具体格式和参数时,只能在程序运行过程中构造SQL语句,需要使用动态SQL语句。
以Format 4 动态SQL语句为例,使用格式如下:DECLARE Cursor | ProcedureDYNAMIC CURSOR | PROCEDUREFOR DynamicStagingArea ;PREPARE DynamicStagingArea FROM SQLStatement{USING TransactionObject} ;DESCRIBE DynamicStagingAreaINTO DynamicDescriptionArea ;OPEN DYNAMIC Cursor | ProcedureUSING DESCRIPTOR DynamicDescriptionArea} ;EXECUTE DYNAMIC Cursor | ProcedureUSING DESCRIPTOR DynamicDescriptionArea ;FETCH Cursor | ProcedureUSING DESCRIPTOR DynamicDescriptionArea ;CLOSE Cursor | Procedure ;---- 在使用动态SQL语句时,需准备DynamicStagingArea对象(全局对象SQLSA)和DynamicDescriptionArea对象(全局对象SQLDA)。
定义游标或过程,读取PREPARE语句中的SQL语句以及语句中说明的参数和类型,执行FETCH语句后,调用相关的函数逐条读取并处理检索结果。
---- 动态SQL语句虽然解能够在程序运行过程中构造SQL语句,但在实际应用中较少使用。
若SELECT语句的结果序列一定,可以通过重新指定DataWindow对象的SELECT语句的方法,达到动态修改SQL语句的功能。
power query sql语句
power query sql语句(实用版)目录1.Power Query 和 SQL 语句的定义和作用2.Power Query 的主要功能和特点3.SQL 语句的基本结构和常用类型4.Power Query 和 SQL 语句的异同5.如何在 Power Query 中使用 SQL 语句正文Power Query 是 Microsoft Power BI 和 Excel 的一部分,它是一种数据处理和数据清洗工具,可以帮助用户连接、合并和转换各种来源的数据。
而 SQL(Structured Query Language,结构化查询语言)是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
Power Query 的主要功能包括数据连接、数据合并、数据转换和数据清理。
它具有强大的数据处理能力,可以处理各种类型的数据,包括数据库、Web、Excel、CSV 等。
而 SQL 语句则是用于执行各种数据库操作的命令,包括 SELECT(查询)、INSERT(插入)、UPDATE(更新)和 DELETE (删除)等。
Power Query 和 SQL 语句在数据处理方面有一定的异同。
首先,它们都可以用于查询和处理数据,但是 Power Query 更加注重数据的清洗和转换,而 SQL 语句则更加注重数据的查询和操作。
其次,Power Query 可以处理各种类型的数据,而 SQL 语句则主要用于处理数据库数据。
最后,Power Query 的语法相对简单,容易上手,而 SQL 语句则需要一定的编程基础。
在 Power Query 中,我们可以使用 SQL 语句来执行各种数据库操作。
例如,我们可以使用 SELECT 语句来查询数据库中的数据,使用 INSERT 语句来插入数据,使用 UPDATE 语句来更新数据,使用 DELETE 语句来删除数据。
在使用 SQL 语句时,我们需要确保 Power Query 中的数据源是数据库,并且需要正确设置 SQL 语句的语法和参数。
PB动态执行SQL
如何在PB中使用動態SQL語句執行沒有輸入參數並且沒有返回結果集的SQL語句。
1.語法其中SQLStatement是要執行的SQL語句,可以直接用引號將要執行的SQL引起來用,或者用字串變數的形式提供SQL語句。
通過使用字串變數可以在具體執行的時候才指定要執行什麼樣的SQL語句。
TransactionObject是用戶所使用的事務物件,缺省為SQLCA。
3.應用實例①建立一張資料庫表(base),SQL語句的表述用引號引起來直接使用。
②執行對資料庫記錄的操作,在表TEMP_TEST中插入一條記錄,SQL語句通過字串變數傳遞執行語句。
執行帶輸入參數但沒有返回結果集時的SQL語句。
1.語法其中:DynamicstagingArea是PowerBuilder提供的一種資料類型。
PowerBuilder本身提供了一個名字為SQLSA的DynamicstagingArea類型的總體變數,用於保存要執行的動態SQL語句資訊。
4.應用實例刪除TEMP_TEST表中的滿足一定條件的記錄。
執行有輸入參數並且返回結果集的格式在編譯時可以確定的SQL語句。
1.語法其中cursor是用戶所定義的游標的名字。
# 應用實例將表TEMP_TEST中的ID欄位大於1的所有記錄讀取出來並分別進行相應處理。
int li_idstring ls_sql,ls_name,ls_filterls_filter = 1ls_sql="SELECT id,name FROM temp_test WHERE id>?"DECLARE c1 DYNAMIC CURSOR FOR SQLSA;PREPARE SQLSA FROM :ls_sql;OPEN DYNAMIC c1 USING :ls_filter;FETCH c1 INTO :li_id,:ls_name;DO WHILE SQLCA.SQLCODE=0 . //對滿足條件的記錄根據要求分別進行處理 . FETCH c1 INTO :li_id,:ls_name;LOOPCLOSE c1;執行有輸入參數並且返回結果集的格式在編譯時無法確定的SQL語句。
PowerBuilder动态SQL语句及在组合查询中的应用.
PowerBuilder不仅支持在PowerScript中使用标准嵌入SQL语句,而且支持使用动态SQL语句。
动态SQL语句可以解决嵌入SQL语句不支持DDL语句的问题,还能够在运行时构成SQL语句以解决在编译时不知道语句的具体格式或参数的问题。
作者在“抚顺机动车辆管理信息系统”的开发过程中,对动态SQL语句的使用有了深刻的体会,车辆信息项目繁多而且组合条件复杂多变,使用该语句,不仅查询速度较高而且使用灵活可靠。
下面就各动态SQL语句的使用格式、方法及各自的特点给予简单介绍,然后以查找车辆为例介绍动态SQL语句(格式4)在组合查询中的应用。
一、态SQL语句格式PowerBuilder 有四种动态SQL格式,每种格式用于处理编译过程中的不同情况。
格式1:既没有输入参数,也没有输出结果集格式2:有输入参数,但没有输出结果集格式3:输入参数和结果集的列已知格式4:输入参数和结果集在编译时有一个或都未知1.动态SQL语句格式格式EXECUTE IMMEDIATE SQLStatement {USING TransactionObject} ;参数描述SQLStatement 是包括一条有效SQL语句的字符串。
该字符串可以是常量或者冒号后面跟PowerBuilder变量(如:mysql)。
该字符串必须只包括在一行上,且不能包含表达式。
TransactionObject(可选项)数据库的事务对象名执行这种格式的SQL语句没有结果集、也不需要输入参数。
这种格式可用来执行所有形式的数据定义语言(DDL)。
以下是一段建立车辆临时视图的例子:string sqlsql=“CREATE VIEW temp_vehicle AS SELECT code , master FROM vehicle ”EXECUTE IMMEDIATE :sql USING SQLDA;2. 动态SQL语句格式格式PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject} ;EXECUTE DynamicStagingArea USING {ParameterList} ;参数描述DynamicStagingArea DynamicStagingArea变量名(通常为SQLSA)SQLStatement包含一条有效SQL语句的字符串。
动态SQL的使用方法
动态SQL的使⽤⽅法⼀般的PL/SQL程序设计中,在DML和事务控制的语句中可以直接使⽤SQL,但是DDL语句及系统控制语句却不能在PL/SQL中直接使⽤,要想实现在PL/SQL中使⽤DDL语句及系统控制语句,可以通过使⽤动态SQL来实现。
⾸先我们应该了解什么是动态SQL,在Oracle数据库开发PL/SQL块中我们使⽤的SQL分为:静态SQL语句和动态SQL语句。
所谓静态SQL指在PL/SQL块中使⽤的SQL语句在编译时是明确的,执⾏的是确定对象。
⽽动态SQL是指在PL Oracle中动态SQL可以通过本地动态SQL来执⾏,也可以通过DBMS_SQL包来执⾏。
下⾯就这两种情况分别进⾏说明: ⼀、本地动态SQL 本地动态SQL是使⽤EXECUTE IMMEDIATE语句来实现的。
1、本地动态SQL执⾏DDL语句: 需求:根据⽤户输⼊的表名及字段名等参数动态建表。
create or replace procedure proc_test(table_name in varchar2, --表名field1 in varchar2, --字段名datatype1 in varchar2, --字段类型field2 in varchar2, --字段名datatype2 in varchar2--字段类型) asstr_sql varchar2(500);beginstr_sql:=’create table ’||table_name||’(’||field1||’ ’||datatype1||’,’||field2||’ ’||datatype2||’)’;execute immediate str_sql; --动态执⾏DDL语句exceptionwhen others thennull;end ; 以上是编译通过的存储过程代码。
下⾯执⾏存储过程动态建表。
SQL>execute proc_test(’dinya_test’,’id’,’number(8) not null’,’name’,’varchar2(100)’);PL/SQL procedure successfully completedSQL>desc dinya_test;Name Type Nullable Default Comments---- ------------- -------- ------- --------ID NUMBER(8)NAME VARCHAR2(100) YSQL> 到这⾥,就实现了我们的需求,使⽤本地动态SQL根据⽤户输⼊的表名及字段名、字段类型等参数来实现动态执⾏DDL语句。
