1 / 4
文档名称:

SQL执行流程资料.docx

格式:docx   大小:82KB   页数:4页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

SQL执行流程资料.docx

上传人:mazhuangzi1 2022/4/2 文件大小:82 KB

下载得到文件列表

SQL执行流程资料.docx

相关文档

文档介绍

文档介绍:.
SQL语句的执行过程(SQLStatementExecution)图中概要的列出了处理和运行一个sql语句的需要各个重要阶段。在某些情况下,Oracle运行sql的过程可能与下面列出的各个阶段的顺序有所不同。如DEFINE阶段可能在F面的每个语句都需要把查询作为它执行的一部分:
INSERTINTOtableSELECT...
UPDATEtableSETx=yWHERE...
DELETEFROMtableWHERE...
CREATEtableASSELECT...
具体来说,查询?要求读一致性?可能使用回滚段作中间处理?可能要求SQL语句处理描述、定义和取数据阶段第3步:描述查询结果(DescribeResultsofaQuery)描述阶段只有在查询结果的各个列是未知时才需要;例如,当查询由用户交互地输入需要输出的列名。在这种情况要用描述阶段来决定查询结果的特征(数据类型,长度和名字)。
第4步:定义查询的输出数据(DefineOutputofaQuery)在查询的定义阶段,你指定与查询出的列值对应的接收变量的位置、大小和数据类型,这样我们通过接收变量就可以得到查询结果。如果必要的话,Oracle会自动实现数据类型的转换。这是将接收变量的类型与对应的列类型相比较决定的。
第5步:绑定变量(BindAnyVariables)此时,Oracle知道了SQL语句的意思,但仍没有足够的信息用于执行该语句。Oracle需要得到在语句中列出的所有变量的值。在该例中,Oracle需要得到对department_id列进行限定的值。得到这个值的过程就叫绑定变量(bindingvariables)此过程称之为将变量值捆绑进来。程序必须指出可以找到该数值的变量名(该变量被称为捆绑变量,变量名实质上是一个内存地址,相当于指针)。应用的最终用户可能并没有发觉他们正在指定捆绑变量,因为Oracle的程序可能只是简单地指示他们输入新的值,其实这一切都在程序中自动做了。
因为你指定了变量名,在你再次执行之前无须重新捆绑变量。你可以改变绑定变量的值,而Oracle在每次执行时,仅仅使用内存地址来查找此值。
如果Oracle需要实现自动数据类型转换的话(除非它们是隐含的或缺省的),你还必须对每个值指定数据类型和长度。关于这些信息可以参考oracle的相关文档,如OracleCallInterfaceProgrammer'sGuide第6步:并行执行语句(ParallelizetheStatement)ORACLE可以在SELECTs,INSERTs,UPDATEs,MERGEs,DELETEs语句中执行相应并行查询操作,对于某些DDL操作,如创建索引、用子查询创建表、在分区表上的操作,也可以执行并行操作。并行化可以导致多个服务器进程(oracleserverprocesses为同一个SQL语句工作,使该SQL语句可以快速完成,但是会耗费更多的资源,所以除非很有必要,否则不要使用并行查询。
第7步:执行语句(RuntheStatement)到了现在这个时候,Oracle拥有所有需要的信息与资源,因此可以真正运行SQL语句了。如果该语句为SELECT查询或INSERT语句,则不需要锁定任何行,因为没有数据需要被改变。然而,如果语句为UPDATE或DELET