2
我對SQL Server的T-SQL很有經驗,但最近開始使用Oracle數據庫(11g)開展一個項目,並且遇到了一些問題似乎是基本的代碼。簡單的PL/SQL函數來測試一個字符串是否是一個數字
我需要測試一組值是否爲數值,並且只有將它們插入到表中才可以。 PL/SQL似乎沒有is_number函數,所以我根據AskTom問題編寫了自己的函數。
create or replace
function IS_NUMBER(str in varchar2) return boolean
IS
n number;
BEGIN
select to_number(str) into n from dual;
return (true);
EXCEPTION WHEN OTHERS THEN
return (false);
END;
最後,我想在WHERE子句中使用該功能,但現在我只是想獲得它在所有運行:
declare
str varchar2(1);
n boolean;
begin
str := '0';
select ca_stage.is_number(str) into n from dual;
end;
在SQL Developer中,試圖運行這給我以下錯誤報告:
Error report:
ORA-06550: line 6, column 39:
PLS-00382: expression is of wrong type
ORA-06550: line 6, column 19:
PLS-00382: expression is of wrong type
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
錯誤報告是直截了當,但沒有意義。該函數接受一個varchar2,這就是我用作輸入變量的東西。它返回一個布爾值,然後,這就是我正在使用的。
正如我所說,這是基本代碼,所以我假設我錯過了一些基本的東西。
布爾表達式不能在SQL中使用。 –
你是對的。你可以輸入這個答案嗎? – virtuesplea
可能的重複[檢查它是否是Oracle中的一個數字函數](http://stackoverflow.com/questions/5082176/check-if-its-a-number-function-in-oracle) – 2014-10-06 21:10:41