T-SQL / Sql Server Manager和C#中输出参数的处理是什么? 2与组件一起使用时如何组合等等?
好吧,我看到人们放入T-SQL存储过程输出参数......
这是什么意思?看起来很简单,但他们设法让它变得枯燥乏味。
即:
我使用select和output参数创建了一个存储过程。
有什么大不了的?无论如何,我执行它并查看结果。
处理程序集或使用C#代码调用它有什么用处?我执行它,我仍然可以设置保存数据表或流读取器中的所有内容,而无需输出参数....
有什么好的解释吗?
同样适用于C#
修改了哪些参数?
I.E:类似FindCity的函数(字符串zipcode,out string cityname)
从我的理解来看,只是我可以在没有声明的情况下使用cityname,它会以字符串形式出现(至少我认为)
什么??? 这是为什么?谁能开导我?
由于
答案 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