我有一个存储过程返回80列和300行.我想写一个选择,获得其中2列.就像是
SELECT col1, col2 FROM EXEC MyStoredProc 'param1', 'param2'
Run Code Online (Sandbox Code Playgroud)
当我使用上面的语法时,我得到错误:
"无效的列名称".
我知道最简单的解决方案是更改存储过程,但我没有写它,我无法改变它.
有什么办法可以做我想要的吗?
我可以创建一个临时表来放置结果,但因为有80列所以我需要制作一个80列的临时表来获得2列.我想避免追踪返回的所有列.
我WITH SprocResults AS ....
按照马克的建议尝试使用,但我遇到了2个错误
关键字"EXEC"附近的语法不正确.
')'附近的语法不正确.
我尝试声明一个表变量,我得到以下错误
插入错误:列名或提供的值数与表定义不匹配
如果我尝试
SELECT * FROM EXEC MyStoredProc 'param1', 'param2'
我得到错误:
关键字'exec'附近的语法不正确.
我很想知道人们如何使用表别名.我工作的其他开发人员总是使用表别名,并且总是使用a,b,c等的别名.
这是一个例子:
SELECT a.TripNum, b.SegmentNum, b.StopNum, b.ArrivalTime
FROM Trip a, Segment b
WHERE a.TripNum = b.TripNum
Run Code Online (Sandbox Code Playgroud)
我不同意他们的看法,认为表别名应该更加谨慎使用.
我认为在查询中包含两次相同的表时应该使用它们,或者当表名很长并且在查询中使用较短的名称时,将使查询更容易阅读.
我也认为别名应该是一个描述性的名称,而不仅仅是一个字母.在上面的例子中,如果我觉得我需要使用1个字母的表别名,我会使用t表示Trip表,而s表示段表.
我正在使用TFS 2010,我需要编辑一个文件localy而不检查它.我希望能够在VS2010中编辑文件,这可能吗?