當前位置:首頁 » 編程語言 » 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;或滑鼠點中該行的行號邊緣