【问题标题】:Getting empty value from stored procedure (sybase)从存储过程(sybase)中获取空值
【发布时间】:2012-03-16 15:55:44
【问题描述】:
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 客户端中执行过程,它会给我正确的值。 有没有人有很好的建议如何解决这个问题?

【问题讨论】:

  • 能给我们看一下在命令中添加参数的代码吗?

标签: c# sybase


【解决方案1】:

将第三个参数声明为

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

另外,选择身份

RETURN @@identity

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多