[20180502]PLDEVELOP與儲存過程除錯.txt
[20180502]PLDEVELOP與儲存過程除錯.txt
--//今天遇到一個調式問題.做一個記錄:
1.環境:
SCOTT@book> @ ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
--//建立過程如下:
CREATE OR REPLACE PROCEDURE oratest (a VARCHAR2, b VARCHAR2)
AS
c VARCHAR2(32767);
BEGIN
c := a || b;
DBMS_OUTPUT.put_line (a || b);
END oratest;
/
--//另外寫法:
CREATE OR REPLACE PROCEDURE oratest1 (a VARCHAR2, b VARCHAR2)
AS
c VARCHAR2(32767);
BEGIN
c := a || b;
DBMS_OUTPUT.put_line (c);
END oratest;
/
SCOTT@book> exec oratest(lpad('a',255,'a'),'b');
aaaaaaaaaaaaaa....
aaaab
PL/SQL procedure successfully completed.
--//在sqlplus以及toad下執行如下:
DECLARE
A VARCHAR2(32767);
B VARCHAR2(32767);
BEGIN
A := lpad('a',255,'a');
B := 'b';
SCOTT.ORATEST ( A, B );
COMMIT;
END;
/
2.但是如果使用pl develop的test windows:
begin
-- Call the procedure
oratest(a => :a,
b => :b);
end;
--//如果輸入引數字串總和長度大於255,就會出現錯誤:
ORA-06502:PL/SQL:number or value error: host bind array too small.
--//即使type選擇PL/SQL string也是一樣.
--//我使用PL的版本 6.0.0.840.
https://blog.csdn.net/zzy7075/article/details/8559358
--//經過分析,在客戶端為9i的機器上執行這個sql,其最大長度限制是255,在10g上執行,最大長度限制是32767.
--//找了一臺9i的windows伺服器測試看看.
SQL> select * from v$version;
BANNER
----------------------------------------------------------------
Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
PL/SQL Release 9.2.0.8.0 - Production
CORE 9.2.0.8.0 Production
TNS for 32-bit Windows: Version 9.2.0.8.0 - Production
NLSRTL Version 9.2.0.8.0 - Production
SQL> CREATE OR REPLACE PROCEDURE oratest (a VARCHAR2, b VARCHAR2)
2 AS
3 c VARCHAR2(32767);
4 BEGIN
5 c := a || b;
6 DBMS_OUTPUT.put_line (a || b);
7 END oratest;
8 /
過程已建立。
SQL> set serverout on
SQL> exec oratest(lpad('a',255,'a'),'b');
BEGIN oratest(lpad('a',255,'a'),'b'); END;
*
ERROR 位於第 1 行:
ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line
ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
ORA-06512: 在"SYS.DBMS_OUTPUT", line 133
ORA-06512: 在"SYSTEM.ORATEST", line 6
ORA-06512: 在line 1
SQL> exec oratest(lpad('a',254,'a'),'b');
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaab
PL/SQL 過程已成功完成。
SQL> set serveroutput on size 10000
SQL> exec oratest(lpad('a',255,'a'),'b');
BEGIN oratest(lpad('a',255,'a'),'b'); END;
*
ERROR 位於第 1 行:
ORA-20000: ORU-10028: line length overflow, limit of 255 chars per line
ORA-06512: 在"SYS.DBMS_OUTPUT", line 35
ORA-06512: 在"SYS.DBMS_OUTPUT", line 133
ORA-06512: 在"SYSTEM.ORATEST", line 6
ORA-06512: 在line 1
--//我的pl/develop的client是10.2.0,難道里面的某些dll版本還是9i的東西.放棄,好在我不用pl/delelop.不過開發遇到這個問題,以後工作注意.
--//另外好像在拼接時開始報錯...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2153674/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- plsqlDevloper 儲存過程的除錯SQLdev儲存過程除錯
- (轉)如何oracle除錯儲存過程Oracle除錯儲存過程
- openGauss 支援儲存過程除錯儲存過程除錯
- pl/sql developer除錯儲存過程報錯處理SQLDeveloper除錯儲存過程
- MySQL儲存過程除錯工具-dbForge Studio for MySQLMySql儲存過程除錯
- oracle plsql儲存過程除錯出錯_PLS-00361OracleSQL儲存過程除錯
- 儲存過程與儲存函式儲存過程儲存函式
- MySQL 建立儲存過程報錯MySql儲存過程
- 儲存過程與函式儲存過程函式
- [20190118]toad下如何除錯儲存過程和函式.txt除錯儲存過程函式
- 查詢儲存過程報錯資訊儲存過程
- 刪除私有dblink的儲存過程儲存過程
- 儲存過程誤刪除的恢復儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- db2刪除已經儲存的表儲存過程DB2儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- 儲存過程與許可權儲存過程
- 儲存過程儲存過程
- [20140515]解密儲存過程.txt解密儲存過程
- 如何在PostgreSQL中除錯plpgsql儲存過程(pldebugger,pldbgapi)SQL除錯儲存過程API
- 讓使用者擁有儲存過程的除錯許可權儲存過程除錯
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- MySQL--儲存過程與檢視MySql儲存過程
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- 儲存過程與許可權(二)儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- MySQL儲存過程詳解 mysql 儲存過程linkMySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- Oracle儲存過程Oracle儲存過程
- Mysql 儲存過程MySql儲存過程
- 使用儲存過程儲存過程
- sybase儲存過程儲存過程
- java儲存過程Java儲存過程
- 管理儲存過程儲存過程
- 呼叫儲存過程儲存過程
- 實戰儲存過程排程過程儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- 從sybase的儲存過程轉向oracle的儲存過程儲存過程Oracle