FMF*_*MFF 1 c# t-sql stored-procedures
我有一个从C#应用程序调用的存储过程.该存储过程具有两个互斥的代码路径; 它们都返回相似类型的记录,如下所示:
IF x=y
SELECT colX, colY
FROM TableA
ELSE
SELECT colX,colY
FROM TableA
WHERE colX > 100
Run Code Online (Sandbox Code Playgroud)
手头的任务涉及在文本文件中写入sp调用的结果; 文件名取决于执行两个SELECT中的哪一个.名称将是MyTextFile.txt或MyTextFileGT100.txt
如何告诉C#app执行了哪两个SELECT语句?
添加另一列是错误的方法 - 特别是使用更大的结果集.您将通过使用应该是一次性值来污染每个记录来增加数据.
也就是说,我建议您的存储过程的可选输出参数:
@branchId int = null output
Run Code Online (Sandbox Code Playgroud)
然后在逻辑块中设置它:
if x=y begin
set @branchId = 1
SELECT colX, colY
FROM TableA
end else begin
set @branchId = 2
SELECT colX,colY
FROM TableA
WHERE colX > 100
end
Run Code Online (Sandbox Code Playgroud)
此解决方案可防止更改结果集,并且只要始终明确指定过程参数,则不应影响任何代码.此外,与添加列选项相比,您可以获得更少的数据通过线路获得的额外好处.
| 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |