表B:
ID | one | two | three |
---|---|---|---|
1 | 11 | 12 | 13 |
22 | 21 | 23 | 24 |
SQL server数据库中执行存储过程(exec CCGC '22')有存储过程返回的结果为:
ID | con |
---|---|
22 | 看见 |
在SQL server数据库中,如何通过SQL语句将上图存储过程返回的结果集和表B通过ID连接在一起,得到以下结果:
ID | one | two | three | con |
---|---|---|---|---|
22 | 21 | 23 | 24 | 看见 |
表B:
ID | one | two | three |
---|---|---|---|
1 | 11 | 12 | 13 |
22 | 21 | 23 | 24 |
SQL server数据库中执行存储过程(exec CCGC '22')有存储过程返回的结果为:
ID | con |
---|---|
22 | 看见 |
在SQL server数据库中,如何通过SQL语句将上图存储过程返回的结果集和表B通过ID连接在一起,得到以下结果:
ID | one | two | three | con |
---|---|---|---|---|
22 | 21 | 23 | 24 | 看见 |
引自免费微信小程序:皆我百晓生
在SQL Server中,我们可以使用临时表或者表变量来暂存存储过程的输出结果,然后通过JOIN操作将这个临时结果与原始表B进行连接。以下是一个示例:
首先,创建一个临时表来接收存储过程的结果集:
CREATE TABLE #TempResult (ID INT, con VARCHAR(100))
INSERT INTO #TempResult (ID, con)
EXEC CCGC '22'
接下来,通过ID字段将临时表#TempResult与表B进行LEFT JOIN(假设你希望保留表B的所有记录,并附加存储过程返回的con值):
SELECT B.ID, B.one, B.two, B.three, T.con
FROM TableB B
LEFT JOIN #TempResult T ON B.ID = T.ID
这样,你就能得到所需的结果集了。最后别忘了删除临时表以释放资源:
DROP TABLE #TempResult
以上步骤整合为一个完整的脚本如下:
BEGIN TRANSACTION
CREATE TABLE #TempResult (ID INT, con VARCHAR(100))
INSERT INTO #TempResult (ID, con)
EXEC CCGC '22'
SELECT B.ID, B.one, B.two, B.three, T.con
FROM TableB B
LEFT JOIN #TempResult T ON B.ID = T.ID
-- 如果不再需要临时表,可以在这里删除它
-- DROP TABLE #TempResult
COMMIT TRANSACTION
请根据实际情况调整表名和列名,以及存储过程的参数。同时,请确保在数据库环境中执行此操作时有适当的权限。