当前位置:首页 » 编程语言 » oraclesql预编译
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oraclesql预编译

发布时间: 2022-07-27 21:11:51

A. oracle 存储过程,请问这样的一个存储过程执行中其中一条语句报错,接下来的语句还会执行吗

不会,直接抛出异常,并终止。存储过程是预编译sql的,主题出错会导致整个存储过程执行失败。

B. oracle rownum=1与rownum<2;哪个效率更高

一样的,
oracle把提交上来的sql语句进行预编译,结果都是取第一行的数据。

C. oracle批量执行sql文件为什么快

因为可以把批量的sql进行预编译 放在数据库内存中 如果调用 直接向数据库发送命令就可以了

D. oracle的预编译pro.exe在哪

Oracle至少提供了两种不同的C语言接口:一个叫做OCI(Oracle Call Interface),这主要是科学家的领域,另一个就是Pro*C。OCI提供了上百个函数,就算只是一个SQL查询请求,也需要编写像打开、解析、绑定、定义、执行、提取结果等这些低层次的代码。即便是最简单的OCI程序也需要近200行长的代码,我还是演示一个Pro*C的例子吧。Pro*C是一个预编译的技术,你可以编写一个同时包括C、SQL、PL/SQL的混合源代码文件。通过在Oracle的proc程序中运行下面代码,输出的是C代码。
/* File on web: callbooktitle.pc */ #include <stdio.h> #include <string.h> EXEC SQL BEGIN DECLARE SECTION; VARCHAR uid[20]; VARCHAR pwd[20]; VARCHAR isbn[15]; VARCHAR btitle[400]; EXEC SQL END DECLARE SECTION; EXEC SQL INCLUDE SQLCA.H; int sqlerror(); int main() { /* VARCHARs actually become a struct of a char array and a length */ strcpy((char *)uid.arr,"scott"); uid.len = (short) strlen((char *)uid.arr); strcpy((char *)pwd.arr,"tiger"); pwd.len = (short) strlen((char *)pwd.arr); /* this is a cross between an exception and a goto */ EXEC SQL WHENEVER SQLERROR DO sqlerror(); /* connect and then execute the function */ EXEC SQL CONNECT :uid IDENTIFIED BY :pwd; EXEC SQL EXECUTE BEGIN :btitle := booktitle('0-596-00180-0'); END; END-EXEC; /* show me the money */ printf("%s\n", btitle.arr); /* Disconnect from ORACLE. */ EXEC SQL COMMIT WORK RELEASE; exit(0); } sqlerror() { EXEC SQL WHENEVER SQLERROR CONTINUE; printf("\n% .70s \n", sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK WORK RELEASE; exit(1); }

正像你看到的那样,Pro*C并不是一个追求纯粹的语言家所支持的,你也不想和这种方式生成的C代码搅合在一起。然而,很多企业发现Pro*C(或者像Pro*Cobol等Oracle支持的语言)是位于像Visual Basic(太笨重和缓慢的一个语言)和OCI(太难了)中间的一个比较合适的选择。
从Oracle自己的文档中,可以找到关于Pro*C的最好信息。

E. 有个SQL,在pl/sql上执行第一次要40来秒,后面执行就只要1秒不到,怎么样才能让第一次执行就很快呢

先告诉下你oracle中sql处理机制吧
像你说的这个情况,就是oracle中的预编译sql过程,它会将你运行过的sql当做一个模板存在内存里,当你下次运行结构与这个sql一样的语句时,然后就直接使用之前的那个sql的缓存,然后换一下where条件的参数值,跳过了后面的很多处理过程,所以你会发现后面再运行类似的sql,处理效率会高很多。

根据我上面的推断,想让sql第一次执行快,只能是让查出来的结果集尽可能的少,但又不能改变它的sql结构,否则就错了。。

F. java连接Oracle数据库预编译写法简写

。。首先这个地方不该图这个省事,到时候一堆1234谁查是什么类型啊。。其次你用ide的话可以直接悬停看到这些常量的值的啊。要是实在不行你还可以写个main直接输出的啊。。

G. 如何使用oracle10g的预编译器proc.exe,将pro*c文件编译为c文件

proc iname=11.pc oname=11.c include=$ORACLE_HOME/precomp/public /*生成.c文件 cc -c -I$ORACLE_HOME/plsql/public 11.c /*生成.o文件 cc -L$ORACLE_HOME/lib -lclntsh -o lisai0 11.o /*生成可执行文件lisai0

H. 如何调试oracle存储过程

PL/SQL中为我们提供了调试存储过程的功能,可以帮助你完成存储过程的预编译与测试。 点击要调试的存储过程,右键选择TEST 如果需要查看变量,当然调试都需要。在右键菜单中选择Add debug information. start debugger(F9)开始我们的测试,Run(Ctrl+R) 随时在varible List中输入我们想查看的变量 其它: Step into(Ctrl+N):单步调试,进入下一步 Step over(Ctrl+O):结束该语句 Step out(Ctrl+T):跳出该过程 Run to next exception:进入下一个断点Breakpoint Toggle Breakpoint设置断点:光标指向一行,Ctrl+B;或鼠标点中该行的行号边缘