簡體   English   中英

如何在以下條件下用SQL創建DB2存儲過程?

[英]How to create a DB2 stored procedure in SQL with following conditions?

我是新來的。 請不要拒絕投票。

我創建了一個名為“ FormData”的表,該表包含以下字段:Reviewer,AgencyName,Name,Email,Phone和所有varchar類型。 我必須從FORMDATA檢索所有行,其中Reviewer等於用戶提供的Reviewer的值。

我已經編寫了以下代碼,但是我沒有得到什么問題。

CREATE PROCEDURE GetFormData( INOUT Reviewer varchar,
                              INOUT AgencyName varchar,
                              INOUT Name varchar,
                              INOUT Email varchar,
                              INOUT Phone varchar)
LANGUAGE SQL
P1:BEGIN
DECLARE v_Reviewer varchar;
SET v_Reviewer=Reviewer;
SELECT * FROM TRAININGDB.FormData
WHERE Reviewer=v_Reviewer;
END P1

在此之后我收到的錯誤是:

DB21034E由於該命令不是有效的命令行處理器命令,因此已作為SQL語句處理。 在SQL處理期間,它返回:SQL0104N在“審閱者varchar”之后發現意外的標記“ END-OF-STATEMENT”

我們正在WebSphere服務器中使用DB2,其余詳細信息都在其中。 產品標識符:SQL09075 DB2 v9.7.500.702 JDK 1.6操作系統:Windows 7

您的代碼有幾個問題,並且您從問題中忽略了關鍵細節(您正在使用的工具/版本/操作系統細節)。

發生SQL0104N的原因是,您沒有配置用於提交語句的工具來指定備用語句定界符。 在過程內部,語句內定界符為分號,但是您需要一個附加定界符來標記過程的結尾(並配置提交該語句的工具以指定該附加定界符)。

在學習過程中,最好的建議是研究IBM示例SQL PL存儲過程,並使它們在您的環境中工作。 這些都可以在您的DB2版本的在線知識中心中看到,也可以安裝在任何DB2 Linux / Windows / Unix服務器上。

如果您是從Unix或Windows上的shell命令行(db2cmd.exe或bash shell)提交的,則下面是過程的示例。 查找與您的版本不同的所有語法,並根據需要進行調整。

--#SET TERMINATOR @
CREATE or replace PROCEDURE GetFormData( IN p_Reviewer varchar(20))
result sets 1
specific GetFormData
LANGUAGE SQL
P1:
BEGIN
    declare c1 cursor for SELECT * FROM TRAININGDB.FormData WHERE Reviewer=p_Reviewer;
    open c1;
END P1
@

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM