簡體   English   中英

從存儲過程中獲取空值(sybase)

[英]Getting empty value from stored procedure (sybase)

CREATE PROCEDURE [dbo].[proc1]
(
    @tbl1   varchar(30),
    @var2   varchar(7000)
)
AS
BEGIN
    DECLARE @sql VARCHAR(8000)


    BEGIN
        SET @sql = 'INSERT INTO ' + @tbl1 + '(column) VALUES (''' + @var2 + ''')'

        EXEC (@sql)

        RETURN CONVERT(int, NEXT_IDENTITY(@tbl1))
    END
END

C#方法:

//create connection
using (AseConnection cn = new AseConnection(connectionString)) {
    AseCommand cmd = new AseCommand();

    AseParameter[] paras = new AseParameter[]{
        new AseParameter("@tbl1", AseDbType.VarChar, 30), 
        new AseParameter("@var1", AseDbType.VarChar, 7000),
        new AseParameter("@RetValue",AseDbType.Integer) };
    // Add all the parameters to command object
    foreach(AseParameter p in  paras) {
        cmd.Parameters.Add(p);
    }

    //finally, execute the command.
    return cmd.ExecuteNonQuery();
}

但是,第三個參數始終為空。 如果我直接在Sybase客戶端中執行過程,它將為我提供正確的值。 有人建議如何解決這個問題嗎?

將第三個參數聲明為

AseParameter retParam = new AseParameter("@RetValue",AseDbType.Integer);
retParam.Direction = ParameterDirection.ReturnValue;

另外,使用

RETURN @@identity

暫無
暫無

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

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