问个存储过程的问题

暗石绿 2003-07-22 12:33:30
CREATE PROCEDURE get_Test
@name varchar(80), -- This is the input parameter.
@count int=0,
@Msg varchar(80)='关键字重复!' OUTPUT -- This is the output parameter.
AS

-- Get the sales for the specified title and
-- assign it to the output parameter.
SELECT @count = count(name)
FROM test
WHERE name = @name

if(@count>0)
begin
print @count
--@Msg = '关键字重复!'
end

else
begin
insert into test(name) values(@name)
print '成功插入'
end

GO

------------------------------------------------------------------
-- 我希望在程序中能获取“关键字重复!”和“成功插入”这两个信息
-- 请问在程序中应该怎么写?存储过程要怎么修改?
...全文
23 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
solo108 2003-07-22
  • 打赏
  • 举报
回复
注意:上面方法只针对sql server ,别的数据库需建立起他的connectiong,command对象。
solo108 2003-07-22
  • 打赏
  • 举报
回复
按照下面的方法调用存储过程,存储过程中这样@msg='ddd' 赋值,@msg作为输出参数
sqlConnection =new SqlConnection(this.ConnectionString);
sqlConnection.Open();
SqlCommand sqlCommand =new SqlCommand("get_Test",sqlConnection);
sqlCommand.CommandType =CommandType.StoredProcedure;
sqlCommand.Parameters.Add("@Name",aaa);
SqlParameter ParaResult = sqlCommand.Parameters.Add("@msg",SqlDbType.Int);
ParaResult.Direction = ParameterDirection.Output;

sqlCommand.Prepare();
sqlCommand.ExecuteNonQuery();
Result =(string)sqlCommand.Parameters["@msg"].Value;
暗石绿 2003-07-22
  • 打赏
  • 举报
回复
thank
solo108 2003-07-22
  • 打赏
  • 举报
回复
也可以用返回值,但作为输出参数好一点,因为返回值可以做一些判断工作,比如操作是否成功等。
comy 2003-07-22
  • 打赏
  • 举报
回复
个人认为把@Msg作为输出参数即可
但不知是否有其他更好的办法

62,046

社区成员

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

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

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

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