2016-06-22 1 views
0

私はこのストアドプロシージャを持つストアド。次に、このストアドプロシージャをデータサービスとインポートされた関数に追加しました。は、データサービスを通じて手続き

私のデータサービス上で作成された自動コードは次のとおりです。

public ObjectResult<Nullable<global::System.Decimal>> GET_NEXT_ID(ObjectParameter nEXTID) 
{ 
    return base.ExecuteFunction<Nullable<global::System.Decimal>>("GET_NEXT_ID", nEXTID); 
} 

その後、私が使用私のデータサービスでこれを公開する:

[WebGet] 
public ObjectResult<decimal?> GET_NEXT_ID() 
{ 
    return this.CurrentDataSource.GET_NEXT_ID(new ObjectParameter("NEXTID", typeof(Decimal))); 
} 

しかし、私は例外を取得しています:

The data reader returned by the store data provider does not have enough columns for the query requested.

私は間違っていますか?

答えて

0

クエリではIDを選択として返すことを期待していますが、ストアドプロシージャは出力変数にパラメータを戻すように設定されています。単純な修正は、selectステートメントから値を戻し、出力変数に挿入しないことです。

+0

例を挙げてください。 –

+0

私はデータベースの構文(Oracle?)は理解できませんが、基本的には標準のSQLで行います。select NEXTVAL。 DBからIDを選択し、出力変数として戻さず、RETURNステートメントを使用して戻さずに、WCFコードを機能させる必要があります。またはWCFコードを変更するが、私はそれを変更するExecuteFunctionの構文も正確にはわからない。 –

1

プロシージャではなくデータベースで関数を宣言してください。

CREATE OR REPLACE FUNCTION GET_NEXT_ID RETURN INTEGER IS 

NEXTID INTEGER; 

BEGIN 

    SELECT SQC_RS_PEDIDO.NEXTVAL INTO NEXTID FROM DUAL; 

    RETURN NEXTID; 

END GET_NEXT_ID; 
+0

私はエラーを取得することを実行します。 警告:コンパイルされたが、コンパイル・エラーも と: [エラー]シンタックスチェック(1:40):実測値:期待 'です':RETURN - または - (-orを - WRAPPED - または - TIMESTAMP –

+0

私はこれがオラクルだと推測します。エラーメッセージを投稿できますか? –

+0

はい、オラクルです。コードをテストすると: [エラー]構文チェック(1:40):見つかった: 'IS '期待:戻り値 - または - WRAPPED - または - TIMESTAMP –

関連する問題