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客户端执行过程,它会给我正确的值。 有没有人有很好的建议如何解决这个问题?
答案 0 :(得分:0)
将第三个参数声明为
AseParameter retParam = new AseParameter("@RetValue",AseDbType.Integer);
retParam.Direction = ParameterDirection.ReturnValue;
另外,用
选择身份RETURN @@identity