PowerBuilder动态SQL语句及在组合查询中的应用.
- 格式:doc
- 大小:41.00 KB
- 文档页数:5
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 是一种强大的数据处理工具,它允许用户连接、合并和转换各种来源的数据。
去年一分一档,今年一分一档。
换算快速统计两家指标。
财务付款统计表与成本合同台账匹配合同编号let fx=(s)=>let源 = Web.BrowserContents("https:///search/"&s&".html"),信息= List.Transform(List.Select(Text.Split(源,"href="""),eachText.Contains(_,"torrent")),(x)=>"https://"&Text.Split(x,""" target"){0}),a=List.Transform(信息,Web.BrowserContents),b=List.Transform(a,(r)=>Text.Split(List.Select(Text.Split(r,"href="""),eachText.Contains(_,"thunder")){0},""">"){0})inbinfx文件夹源= Table.AddColumn( Folder.Files("x"), "添加列", each Excel.Workbook([Content]))直接两个文件源。
= bine({Excel.Workbook(File.Contents("C:\Users\Administrator\Desktop\a1.xls"), null, true){[Name="第2页"]}[Data],Excel.Workbook(File.Contents("C:\Users\Administrator\Desktop\a2.xls"), null,true){[Name="第2页"]}[Data]})清单去空白行。
在PowerBuilder下使用动态SQL语句(最全)在PowerBuilder下使用动态SQL语句(最全)摘要:本文介绍了PowerBuilder开发工具中嵌入式SQL语句与动态SQL语句之间的区别和特点,并通过具体实例详细说明了如何在PowerBuilder中使用动态SQL语句以及四种格式的动态SQL语句各自所能实现的功能。
关键词:PowerBuilder动态SQL嵌入式SQL一、前言PowerBuilder是目前最流行的数据库开发工具之一。
中国农业银行的“信贷综合管理系统”和用于上报人民银行的信贷登记咨询系统的“接口程序”都是使用PowerBuilder开发的。
PowerBuilder提供了在程序代码中加入嵌入式SQL语句的功能来支持对数据库的访问。
但这种嵌入式SQL语句只能支持一些固定的标准的SQL语句,即在进行程序代码编译处理时这些SQL语句必须是确定的,例如:对哪张表哪几个字段进行操作在程序代码中是固定写明的,另外这种方式也不能执行像Creat Table,Creat Database等这些数据库定义的语句(DDL)。
因此这种嵌入式SQL语句在实际应用中有一定的局限性。
为克服这种方式的局限性,可以使用PowerBuilder提供的动态SQL语句,这种对数据库访问的方式可以完成嵌入式SQL语句无法实现的功能。
如建库、建表这一类的数据库定义语句(DDL);其次,由于动态SQL语句允许在执行时才确定到底要执行怎样的SQL语句,因此使用动态SQL 语句可以使程序实现参数化设计,具有很大的灵活性和通用性。
二、动态SQL语句的应用分析PowerBuilder提供了四种格式的动态SQL语句,每种格式都有自己不同的特点和作用。
下面我们对各种格式的具体使用方法分别加以说明。
(一)第一种格式当执行没有输入参数并且没有返回结果集的SQL语句时可以使用这种格式,这种格式使用比较简单,其实现的操作也比较少。
1 语法EXECUTE IMMEDIATE SQLStatement{USING TransactionObject};其中SQLStatement是要执行的SQL语句,可以直接用引号将要执行的SQL引起来用,或者用字符串变量的形式提供SQL语句。
firebird dsql写法Firebird数据库中使用DSQL(Dynamic SQL)来执行动态SQL语句。
DSQL可以在SQL语句中包含动态元素,从而实现更灵活的查询和操作。
以下是一些常见的Firebird DSQL写法示例:1. 执行简单的SELECT查询:```sqlDECLARE VARIABLE my_variable INT;EXECUTE STATEMENT 'SELECT * FROM my_table WHERE column = :my_variable' INTO :result_variable USING :my_variable;```2. 执行INSERT语句:```sqlDECLARE VARIABLE my_value INT;EXECUTE STATEMENT 'INSERT INTO my_table (column) VALUES (:my_value)' WITH AUTONOMOUS TRANSACTION;```3. 执行UPDATE语句:```sqlDECLARE VARIABLE my_value INT;EXECUTE STATEMENT 'UPDATE my_table SET column = :my_value WHERE id = 1' WITH AUTONOMOUS TRANSACTION;```4. 执行DELETE语句:```sqlDECLARE VARIABLE my_id INT;EXECUTE STATEMENT 'DELETE FROM my_table WHERE id = :my_id' WITH AUTONOMOUS TRANSACTION;```5. 使用FOR EXECUTE STATEMENT循环:```sqlFOR EXECUTE STATEMENT 'SELECT column FROM my_table'INTO :result_variableDOBEGIN-- Process each rowEND```这里的关键点是使用`EXECUTE STATEMENT`语句,它允许你在运行时动态执行SQL语句。
power bi sql语句Power BI 不支持直接运行 SQL 语句,但可以通过 Power Query 或 DirectQuery 来连接 SQL 数据库,并实现数据的查询、转换和可视化。
使用 Power Query 连接 SQL 数据库:1. 在 Power BI Desktop 中,选择“获取数据”按钮,然后选择SQL Server 数据库。
2. 输入服务器名称、数据库名称以及身份验证信息。
3. 选择要查询的表格或视图,并进行必要的数据转换操作。
使用 DirectQuery 连接 SQL 数据库:1. 在 Power BI Desktop 中,选择“获取数据”按钮,然后选择SQL Server 数据库。
2. 输入服务器名称、数据库名称以及身份验证信息。
3. 不选择任何表格或视图,直接点击“加载”。
通过以上方式连接后,您可以使用 Power BI 的查询编辑器来编写和执行SQL 查询语句。
例如,在Power Query 编辑器中,您可以使用 M 语言编写自定义查询代码,如下所示:```mletSource = Sql.Database("serverName", "databaseName"),Query = "SELECT * FROM tableName",Result = Value.NativeQuery(Source, Query)inResult```这将返回给定表格的所有数据。
还可以使用 Power BI 的可视化功能来创建报表和仪表板,将SQL 查询的结果以图表、表格等形式展示出来。
PowerBuilder的一种高效组合查询方法的实现胡海涛【摘要】本文探讨并以实例论述一种高效快速实现组合查询程序设计的方法以节省编程时间,提高开发效率.【期刊名称】《智能计算机与应用》【年(卷),期】2010(000)002【总页数】2页(P94-95)【关键词】PowerBuilder;SQL语句;组合查询;数据窗口【作者】胡海涛【作者单位】哈尔滨理工大学计算机科学与技术学院,黑龙江,哈尔滨,150080【正文语种】中文【中图分类】TP311.52组合查询使用起来非常灵活,可以实现几倍甚至几十倍于单一条件的查询效率。
如能以相对简便的方法实现组合查询,则无疑将大大提高程序开发的效率,缩短开发周期。
通过实例提出一种高效、快速实现组合查询程序设计的方法,借助PB提供的数据窗口,用较少的程序代码实现组合查询程序功能,既灵活,又易于实现,可以满足大部分特殊查询要求。
1 数据窗口的检索参数数据窗口是PB提供查询数据的强大工具,其查询的数据源是内部的SQL语句。
在设计数据窗口的SELECT语句时,可以为SELECT语句设置检索参数变量[1]。
例如以某企业数据为例,现需查询某一专业员工名单,假定员工表名为Staff,其数据结构如下:表1 数据结构数据类型备注Number字段名含义Char(20)主键Name性别编号姓名Char(20)Rank Char(20)Dept职称Char(20)Sex部门Integer Major年龄Char(20)Duty 职务 Char(20)Char(20)Age专业设计实现这种功能的查询非常简单,只需在设计数据窗口对象dw_staff时对该数据窗口对象的SELECT语句增加一检索参数vmajor,在SELECT语句的Where子句中增加一个条件Major=:vmajor即可,完整的SELECT语句如下:在查询窗体中输入vmajor参数的值并以该参数值检索数据窗口对象dw_staff对应的数据窗口控件即可。
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语句的字符串。
该字符串可以是常量或者冒号后面跟 PowerBuilder 变量(如:mysql)。
在该语句中每个参数键入问号(?)。
TransactionObject(可选项)定义数据库的事务对象名ParameterList (可选项)用冒号分隔的PowerScript变量列表以下是一段使用格式2的脚本:int id = 156 //车辆IDString master //车主SetNull(master) // 设成NULL值PREPARE SQLSAFROM "INSERT INTO vehicle VALUES (?,?)" ;EXECUTE SQLSA USING :id, :master ;用这种SQL语句格式执行没有结果集、但需要输入参数。
可用来执行所有形式的数据库定义语言(DDL)。
3. 动态SQL语句格式格式DECLARE Cursor | Procedure DYNAMIC CURSOR | PROCEDURE FOR DynamicStagingArea ;PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject} ;OPEN DYNAMIC Cursor {USING ParameterList} ;EXECUTE DYNAMIC Procedure {USING ParameterList} ;FETCH Cursor | Procedure INTO HostVariableList ;CLOSE Cursor | Procedure ;参数描述Cursor or Procedure cursor或procedure名DynamicStagingArea DynamicStagingArea变量名(通常为SQLSA)。
SQLStatement 一条有效SQL SELECT语句的字符串。
该字符串可以是常量或变量。
TransactionObject (可选项)定义数据库的事务对象名ParameterList (可选项)用豆号分隔的PowerScript变量列表HostVariableList 把数据值提取到PowerScript变量的列表以下是一段使用格式3的脚本:DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ; //声明动态游标integer Vehicle_id //查找的车辆ID string Mark= "BMW" //厂牌是”BMW”string sqlstatementsqlstatement = "SELECT id FROM vehicle "+"WHERE mark = ?" //SQL语句PREPARE SQLSA FROM :sqlstatement ; //在SQLSA中准备SELECT语句OPEN DYNAMIC my_cursor using :Mark ;//执行SQL语句,结果存入动态游标my_cursor中FETCH my_cursor INTO :Vehicle_id ; //从my_cursor中提取结果CLOSE my_cursor ; //关闭游标此种SQL语句的执行,需输入参数和知道结果集的列。
4.动态SQL语句格式格式DECLARE Cursor|Procedure DYNAMIC CURSOR|PROCEDURE FOR DynamicStagingArea;PREPARE DynamicStagingArea FROM SQLStatement {USING TransactionObject};DESCRIBE DynamicStagingArea INTO DynamicDescriptionArea;OPEN DYNAMIC Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea ;EXECUTE DYNAMIC Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea ;FETCH Cursor | Procedure USING DESCRIPTOR DynamicDescriptionArea ; CLOSE Cursor | Procedure ;参数描述Cursor or Procedure cursor 或 procedure名DynamicStagingArea DynamicStagingArea变量名(通常为SQLSA)。
SQLStatement SQL SELECT语句的字符串。
该字符串可以是常量或变量。
在该语句中,给每个参数的值赋予问号(?)。
TransactionObject (可选项)定义数据库的事务对象名DynamicDescriptionArea DynamicDescriptionArea变量名(SQLDA)二、动态SQL语句格式4的使用方法1.输入参数可以设置PREPARE语句中每个输入参数的类型和值。
在DESCRIBE语句执行时, PowerBuilder 填充SQLDA 属性NumInputs的值。
可以使用SetDynamicParm 函数来设置指定参数的类型和值。
输入参数是可选的,但如果使用它们,必须在执行OPEN 或EXECUTE语句之前为全部输入参数赋值。
2.输出参数可以存取PREPARE语句中出现的每个输出参数的类型和值。
如果数据库支持输出参数描述,则在DESCRIBE 执行时,PowerBuilder 填充 SQLDA 属性NumOutputs的值,否则在FETCH 执行时填充 SQLDA 属性NumOutputs的值。
FETCH 语句执行后,DynamicDescriptionArea变量(SQLDA)中可以被访问的属性有:NumInputs 输入参数的个数InParmType 输入参数类型数组NumOutputs 输出参数的个数OutParmType 输出参数类型数组3.用于获取输出参数值的函数GetDynamicDateGetDynamicDateTimeGetDynamicNumberGetDynamicStringGetDynamicTime4.输入/输出参数的数据类型TypeBoolean!TypeDate!TypeDateTime!TypeDecimal!TypeDouble!TypeInteger!TypeLong!TypeReal!TypeString!TypeTime!TypeUInt!TypeULong!TypeUnknown!下面的程序段使用了格式4的动态SQL语句。
string SqlstatementSqlstatement = "SELECT id FROM vehicle "+"WHERE mark = ?" PREPARE SQLSA FROM :Sqlstatement ;DESCRIBE SQLSA INTO SQLDA ; //如果DESCRIBE语句执行成功,则输入描述数组必须 // 在OPEN语句执行之前赋值.DECLARE my_cursor DYNAMIC CURSOR FOR SQLSA ;SetDynamicParm(SQLDA, 1, "MA")OPEN DYNAMIC my_cursor USING DESCRIPTOR SQLDA ;FETCH my_cursor USING DESCRIPTOR SQLDA ; //FETCH成功,则输出描述数组含有结//果集CLOSE my_cursor;5.使用PowerBuilder数据类型DynamicStagingArea和DynamicDescriptionAreaDynamicStagingArea 是PowerBuilder的一种数据类型。
PowerBuilder用该类型变量保存在接下来的语句中使用的信息。
DynamicStagingArea 是执行语句和事务对象之间的唯一联系者,它在PowerBuilder内部使用,用户无法存取其中的信息。