2

null パラメータを提供する Sybase ストアド プロシージャを呼び出そうとすると、エラーが発生します。

私はサンドボックスを書きました(以下のコードを参照)

コードを実行すると、「サポートされていないパラメーター タイプ」という例外が発生します。コードが機能する唯一の方法は、null パラメーター (デフォルトで null になります) を削除することですが、コードが乱雑な ORM 内に含まれているため、これはオプションではありません。

Sybase.AdoNet2.AseClient v 1.15.346.0 を使用しています。sybase データベースのバージョンは 12.5.4 です。お役に立てれば幸いです。よろしくお願いします、 ベルナベ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sybase.Data.AseClient;

namespace SybaseSPParamNulo
{
    class Program
    {
        static void Main(string[] args)
        {
            string cnxString = @"Data Source=192.168.0.8;Port=5000;Database=PiaSigna;Uid=sa;Pwd=123456;";
            Sybase.Data.AseClient.AseConnection cnx = new AseConnection(cnxString);
            AseCommand cmd = new AseCommand("sp_sectores_por_sucursal");
            cmd.CommandType = System.Data.CommandType.StoredProcedure;
            AseParameter p = new AseParameter("@suc", DBNull.Value );
            cmd.Parameters.Add(p);

            cnx.Open();
            cmd.Connection = cnx;
            cmd.ExecuteReader();
            cnx.Close();


        }
    }
} 


The following is the SP

CREATE procedure [dbo].[sp_sectores_por_sucursal]
@suc numeric(4)=NULL
AS 

select s.CODSEC,DESC_SEC from GYF_SECTORES s
join SUCURSAL_SECTORES ss on ss.CODSEC=s.CODSEC
where (NNSUCURSAL_ID=@suc)

IF @@ERROR <> 0 
   RETURN 1
RETURN 0
4

1 に答える 1

1

はい、ドライバーの問題である可能性がありますset ansinull off。接続後に試してみてください。デルファイ/サイベースで同様の問題に直面しました。以下のコードを使用して問題を解決しました。

procedure TForm.TestConnectionAfterConnect(Sender: TObject);
begin
   TestConnection.ExecSQL('set ansinull off',[]);
end;
于 2014-01-22T08:01:15.890 に答える