2013-04-30 113 views
3

我正試圖將答案插入用戶的安全問題,以便在引腳重置功能中使用。PLS-00103:遇到符號「;」當期待以下其中一項時:

Ellucian banner v8 +提供了一個用於運行這個API的API,並且我對他們的API非常新,並且從下面的錯誤消息的外觀來看,我遠遠沒有正確運行它。任何幫助表示讚賞。

我試着在Oracle SQL Developer中運行以下命令:

execute gb_pin_answer.p_create(
    P_PIDM  => 12345, 
    P_NUM   => 1, 
    p_gobqstn_id => 1, 
    p_qstn_desc => '', 
    p_ansr_desc => 'David', 
    p_ansr_salt => 'A123B456', 
    p_user_id  => 'W:H12345678', 
    p_data_origin => 'WWW_USER', 
    p_rowid_out   OUT gb_common.internal_record_id_type 
); 

這是一個在黑暗中拍攝,但我想我給它試圖執行該程序包的p_create時顯示一個鏡頭,錯誤信息功能:

錯誤起始於第15行中的命令:執行gb_pin_answer.p_create( 錯誤報告:ORA-06550:行1,列30:PLS-00103:出現 符號 「;」 期待的一個時如下:

() - +案例MOD新NOT NULL表繼續平均算 當前存在的最大分鐘前SQL STDDEV和方差執行 多重集兩個領先尾隨FORALL合併年月日時 分秒timezone_hour timezone_minute timezone_region timezone_abbr時間時間戳間隔日期 06550. 00000 - 「行%s,列%s:\ n%s」 *原因:通常是PL/SQL編譯錯誤。 *操作:

錯誤在命令開始在第16行:P_PIDM => 12345,錯誤 報告:未知指令

在命令開始於17行錯誤:P_NUM => 1,錯誤報告: 未知指令

在命令開始於18行錯誤:p_gobqstn_id => 1,錯誤報告: 未知指令

在命令開始於19行錯誤:p_qstn_desc => '',錯誤報告 :未知通訊和

錯誤開始在第20行中的命令:p_ansr_desc => '大衛',錯誤 報告:未知指令

錯誤在命令開始在第21行:p_ansr_salt => 'A123B456', 錯誤報告:未知命令

錯誤在命令開始在管線22:p_user_id => 'W:H12345678', 錯誤報告:未知命令

在命令開始於23行錯誤:p_data_origin => 'WWW_USER', 錯誤報告: 未知的命令

從第24行開始的命令錯誤:p_rowid_out OUT gb_common。internal_record_id_type錯誤報告:未知命令

錯誤的命令開始在第25行:)錯誤報告:未知命令

這是我在使用此功能,p_create讀了起來:http://inb1.banner.ecu.edu:9090/api_erd_index_guide/api/general/gb_pin_answer.html#p_create

更新:代碼是示數出來:

SET SERVEROUTPUT ON 
declare 
    l_rowid_out gb_common.internal_record_id_type; 
BEGIN 
    gb_pin_answer.p_create(P_PIDM => 36706, P_NUM => 1, P_GOBQSTN_ID => 1, P_QSTN_DESC => '', P_ANSR_DESC => 'David', P_ANSR_SALT => 'HB123456', P_USER_ID => 'H00036657', P_DATA_ORIGIN => 'WWW_USER', P_ROWID_OUT => 1_rowid_out); 
    dbms_output.put_line('rowid: ' || l_rowid_out); 
END; 

錯誤消息:

錯誤報告:ORA-06550:行4,列199:PLS-00363:表達式 '1' 不能用來作爲分配目標ORA-06550:行4,列3: PL/SQL:語句忽略 06550. 00000 - 「行%s,列%s:\ n%s」 *原因:通常是PL/SQL編譯錯誤。 *操作:

回答

5

問題是execute。這實際上是一個簡短的匿名PL/SQL塊的簡寫,不能跨行分割。 (除了延續角色,但我不記得如果我有這個工作)。只有第一行是翻譯,所以它的有效嘗試運行:

begin execute gb_pin_answer.p_create(; end; 
/

...它相當合理然後不喜歡的p_create(;結束命令。接下來的過程調用將被視爲10個單獨的命令,這些命令會產生您獲得的其他錯誤,並且在這種情況下它們也是合理的。

解決方法是將整個過程調用放在一行上,這會使讀取更難;或者乾脆用自己的塊,而不是依賴於execute

begin 
    gb_pin_answer.p_create(
     ... 
    ); 
end; 
/

最後一個參數是不正確的,雖然; OUT ...的位需要替換爲=> some_value,就像你對其他人所做的那樣。但它是一個輸出參數,所以你需要一些東西來把值放進去。沒有看到你正在運行的腳本還有什麼,我不知道你是否已經照顧它,但是用這種模式,你可以可能只是一個變量添加到匿名塊:

set serveroutput on 
declare 
    l_rowid_out gb_common.internal_record_id_type; 
begin 
    gb_pin_answer.p_create(
     ... 
     p_rowid_out => l_rowid_out 
    ); 
    -- optional 
    dbms_output.put_line('rowid: ' || l_rowid_out); 
end; 
/
+0

我想: SET SERVEROUTPUT ON 聲明 l_rowid_out gb_common.internal_record_id_type; P_DSR_DESC =>'David',P_ANSR_SALT =>'HB123456',P_USER_ID =>'H00036657',P_DATA_ORIGIN(P_PIDM => 36706,P_NUM => 1,P_GOBQSTN_ID => 1,P_ANSR_DESC =>'David',P_ANSR_SALT =>'H123456' =>'WWW_USER',P_ROWID_OUT => 1_rowid_out); dbms_output。put_line('rowid:'|| l_rowid_out); END;錯誤消息的 / – Brad 2013-05-01 14:31:42

+0

片段,它返回: 錯誤報告: ORA-06550:行4,列215: PLS-00103:出現符號 「_」 在需要下列之一時: ),*& = - + at in是mod餘數不是rem <>或!=或= => = <= <>和或類似於2 like4 likec between || multiset member submultiset *,在「_」之前插入以繼續。 06550. 00000 - 「line%s,column%s:\ n%s」 *原因:通常是PL/SQL編譯錯誤 *行動: – Brad 2013-05-01 14:32:54

+0

@布拉德 - 你真的有'1_rowid_out'而不是'l_rowid_out'作爲參數嗎? – 2013-05-01 14:33:03

0

從最後一次編輯,我看到你misstaken 1l ... 1_rowid_out,而不是l_rowid_out

你不能用你想要的數字來啓動一個變量。

相關問題