我想知道如何从R中的存储过程中获取结果。我目前正在使用带有RODBC包的RStudio并且正在使用
sqlQuery(conn, 'exec sp_name vars')
作为我的查询。存储过程应该返回一个整数,表示生成数据的新行号。我该怎么做?目前,我得到-2
或character(0)
回复我的处决。
只是尝试返回一个数字并将其存储在R侧。
存储过程
USE [Internship]
GO
/****** Object: StoredProcedure [dbo].[pCreateKMeanTest] Script Date: 7/20/2017 12:51:28 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[pCreateKMeanTest]
(@DataSetName varchar(255)
,@SQLStatement varchar(5000)
,@ColumnUsed varchar(2900)
,@TotClusters int )
as
/*
exec pCreateKMeanTest
@DataSetName = '[dbo].[vAccountMemberProductDetailWithBehavior]'
,@SQLStatement = 'select [demo_age], Profit_PnlAmt, Census_HomeNearestBranchDistance from [dbo].[vAccountMemberProductDetailWithBehavior]'
,@ColumnUsed = 3
,@TotClusters = 5
*/
begin transaction
insert into dbo.KMean
(ExecutedDateTime
,DataSetName
,SQLStatement
,ColumnUsed
,TotClusters)
select
getdate()
,@DataSetName
,@SQLStatement
,@ColumnUsed
,@TotClusters
select max(TestID) from dbo.KMean (nolock)
commit transaction
GO
答案 0 :(得分:2)
作为评论,因为它可能有助于未来的读者:
对于SQL Server存储过程,添加SET NOCOUNT ON
以避免行结果输出可能会干扰要求返回表/查询数据的RODBC sqlQuery
。
通常对于大多数存储过程,如果需要返回实际数据,请将任何SELECT
语句移动到正在执行操作查询的事务块之外(即UPDATE
,INSERT INTO
)。