-2

T-SQL/Sql Server Manager 和 C# 中的输出参数是怎么回事?2 在与程序集等一起使用时如何组合?

好吧,我看到人们将 T-SQL 存储过程输出参数放入...

这是什么意思?这看起来很简单,但他们设法让它变得沉闷和复杂。

IE:

我制作了一个带有选择和输出参数的存储过程。

有什么大不了的?我执行它并看到结果。

程序集或从 C# 代码中调用它是怎么回事?我执行它,我仍然可以设法将所有内容保存在数据表或流阅读器中,而无需输出参数......

有什么好的解释吗??

C# 也是如此

修改的输出参数是什么?

IE:像这样的函数 FindCity(string zipcode, out string cityname)

据我了解,只是我可以在不声明 cityname 的情况下评估它,它会以字符串的形式出现(至少我认为)

什么???这是为什么?任何人都可以启发我吗?

谢谢

4

2 回答 2

2

虽然是的,但在 SQL 中,您可以只使用“选择”将值作为单元格返回,但这并不总是很方便。特别是,对于(比如说)将从其他 tsql 调用的存储过程 - 从 SQL 调用 so 时处理结果集非常棘手;对比:

exec someInsertProc 123, 'ABC', out @id

同样的模式也可以用于非进程 SQL,只是为了使其方便和明确,并使 api 形式化。


在 c# 中,您只能得到一个返回值 - 与“选择”没有什么可比性。现在,您可以返回一个复杂对象以具有多个值的属性,但有时使用“out”更方便 - 例如:

int i;
if(int.TryParse(s, out i)) {

. 总计 += 我; }

请注意,“out”和“ref”相对不常见——而且经常被人们误解。但它们在某些情况下非常有用。

于 2013-08-17T15:57:35.383 回答
0

SQL:用作向调用者输出结果的附加方式。假设您想查看记录列表和一些聚合或一些相关的单一数据。而不是在结果集中为其创建列,您可以将其写入输出变量。

C#:保证在函数调用退出之前填充 out 参数(否则您的代码将不会编译)。它也是一种将多个对象返回给调用者的方法。看一眼int.TryParse

于 2013-08-17T15:44:32.093 回答