然而,在T-SQL和C#上都没有掌握“输出变量”的概念

时间:2013-08-17 15:32:17

标签: c# sql-server tsql parameters output

T-SQL / Sql Server Manager和C#中输出参数的处理是什么? 2与组件一起使用时如何组合等等?

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

这是什么意思?看起来很简单,但他们设法让它变得枯燥乏味。

即:

我使用select和output参数创建了一个存储过程。

有什么大不了的?无论如何,我执行它并查看结果。

处理程序集或使用C#代码调用它有什么用处?我执行它,我仍然可以设置保存数据表或流读取器中的所有内容,而无需输出参数....

有什么好的解释吗?

同样适用于C#

修改了哪些参数?

I.E:类似FindCity的函数(字符串zipcode,out string cityname)

从我的理解来看,只是我可以在没有声明的情况下使用cityname,它会以字符串形式出现(至少我认为)

什么??? 这是为什么?谁能开导我?

由于

2 个答案:

答案 0 :(得分:2)

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

exec someInsertProc 123, 'ABC', out @id

这个相同的模式对于非proc SQL也很有用,只是为了方便和明确,并使api正式化。


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

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

。总+ = i;     }

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

答案 1 :(得分:0)

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

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