存储过程返回值问题

_程序员 2011-03-06 06:41:50
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[insertemployee]
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FistName varchar(10),
@EmployeeID int OUTPUT
AS
INsert INto Employees
(TitleOfCOurtesy,LastName,FistName,HireDate)values(@TitleOfCourtesy,@LastName,@FistName,GETUTCDATE());
set @EmployeeID = @@IDEntity
...全文
100 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
_程序员 2011-03-06
  • 打赏
  • 举报
回复
要一个自增ID才可以...
_程序员 2011-03-06
  • 打赏
  • 举报
回复
OK了谢谢各位
huangwenquan123 2011-03-06
  • 打赏
  • 举报
回复

--写了个测试没问题--
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[InsertUsers]
(
@UserName varchar(255),@Password varchar(255),@UserID int output
)
as
insert into Users(UserName,Password)values(@UserName,@Password)
set @UserID=@@Identity

    protected void Button1_Click(object sender, EventArgs e)
{
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = ConfigurationManager.ConnectionStrings["Connection"].ConnectionString;
conn.Open();
SqlCommand cmd = new SqlCommand("[InsertUsers]", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@UserName", TextBox1.Text));
cmd.Parameters.Add(new SqlParameter("@Password", TextBox2.Text));
cmd.Parameters.Add(new SqlParameter("@UserID", 0)).Direction = ParameterDirection.Output;
int result = cmd.ExecuteNonQuery();
Response.Write(result + " UserID:" + cmd.Parameters["@UserID"].Value);
}
}
wuyq11 2011-03-06
  • 打赏
  • 举报
回复
是否设置自增列
  • 打赏
  • 举报
回复
要设置自增的
_程序员 2011-03-06
  • 打赏
  • 举报
回复
一个测试而已,用什么三层
alan_219_2008 2011-03-06
  • 打赏
  • 举报
回复
表设置了自增种子没?
看了好久 貌似没错。。
cf370697816 2011-03-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qq77452919 的回复:]
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[insertemployee]
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FistName varchar(10),
@EmployeeID int OUTPUT
AS
I……
[/Quote]
你这代码好乱,没用三层做嘛?
_程序员 2011-03-06
  • 打赏
  • 举报
回复
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[insertemployee]
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FistName varchar(10),
@EmployeeID int OUTPUT
AS
INsert INto Employees
(TitleOfCOurtesy,LastName,FistName,HireDate)values(@TitleOfCourtesy,@LastName,@FistName,GETUTCDATE());
select @EmployeeID = @@IDEntity

还是没有哦..
  • 打赏
  • 举报
回复

declare @aa int
Insert Into testA(NameA) values('123') SELECT @aa=@@IDENTITY;
print '值为'+Cast(@aa As nvarchar(50))


输出结果

(1 行受影响)
值为7
  • 打赏
  • 举报
回复

ALTER procedure [dbo].[insertemployee]
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FistName varchar(10),
@EmployeeID int OUTPUT
AS
INsert INto Employees
(TitleOfCOurtesy,LastName,FistName,HireDate)values(@TitleOfCourtesy,@LastName,@FistName,GETUTCDATE());
SELECT @EmployeeID = @@IDEntity


SELECT
_程序员 2011-03-06
  • 打赏
  • 举报
回复
应该是存储过程那里出了问题
_程序员 2011-03-06
  • 打赏
  • 举报
回复
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER procedure [dbo].[insertemployee]
@TitleOfCourtesy varchar(25),
@LastName varchar(20),
@FistName varchar(10),
@EmployeeID int OUTPUT
AS
INsert INto Employees
(TitleOfCOurtesy,LastName,FistName,HireDate)values(@TitleOfCourtesy,@LastName,@FistName,GETUTCDATE());
set @EmployeeID = @@IDEntity







SqlConnection con = new SqlConnection("Server=Shepherd-pc; Integrated Security =true; Database=test");
SqlCommand cmd = new SqlCommand("InsertEmployee",con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@TitleOfCourtesy", SqlDbType.NVarChar, 25));
cmd.Parameters["@TitleOfCourtesy"].Value = "不知道是什么";
cmd.Parameters.Add(new SqlParameter("@LastName", SqlDbType.NVarChar, 20));
cmd.Parameters["@LastName"].Value = "九阳";
cmd.Parameters.Add(new SqlParameter("@FistName", SqlDbType.NVarChar, 10));
cmd.Parameters["@FistName"].Value = "王";
cmd.Parameters.Add(new SqlParameter("@EmployeeID", SqlDbType.Int, 4));
cmd.Parameters["@EmployeeID"].Direction = ParameterDirection.Output;
con.Open();
Console.WriteLine("{0}\n{1}", cmd.ExecuteNonQuery(), cmd.Parameters["@EmployeeID"].Value);
con.Close();
_程序员 2011-03-06
  • 打赏
  • 举报
回复
cmd.Parameters["@EmployeeID"].Direction = ParameterDirection.Output;
cmd.Parameters[3].Direction = ParameterDirection.Output;
都不行而且我在数据库里面直接调用存储过程...也是没有返回值
huangwenquan123 2011-03-06
  • 打赏
  • 举报
回复
你代码怎么写的?
_程序员 2011-03-06
  • 打赏
  • 举报
回复
cmd.Parameters["@EmployeeID"].Value返回值为空
wuyq11 2011-03-06
  • 打赏
  • 举报
回复
IDataParameter[] parameters = {
new SqlParameter("@TitleOfCourtesy ", SqlDbType.NVarChar,25) ,
new SqlParameter("@LastName ", SqlDbType.NVarChar,20) ,
new SqlParameter("@FistName ", SqlDbType.NVarChar,20) ,
new SqlParameter("@EmployeeID ", SqlDbType.Int,4)
};
parameters[0].Value = "";
parameters[1].Value = "";
parameters[2].Value = "";
parameters[3].Direction = ParameterDirection.Output; // 设置为输出参数

_程序员 2011-03-06
  • 打赏
  • 举报
回复
cmd.Parameters["@EmployeeID"].Direction = ParameterDirection.Output;
cmd.Parameters["@EmployeeID"].Value
这两句吗?
不行哦
wuyq11 2011-03-06
  • 打赏
  • 举报
回复
设置ParameterDirection.Output;
parameters[3].Value返回值
_程序员 2011-03-06
  • 打赏
  • 举报
回复
为什么 没有返回值...?

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧