我想知道如何从 R 中的存储过程中获取结果。我目前正在将RStudio与RODBC软件包一起使用,并且正在使用
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
正如评论的那样,因为它可能有助于未来的读者:
对于 SQL Server 存储过程,请添加一个SET NOCOUNT ON
以避免行结果输出可能会干扰 RODBC 的sqlQuery
,该需要返回表/查询数据。
通常,对于大多数存储过程,如果需要返回实际数据,请将任何SELECT
语句移动到正在执行操作查询(即UPDATE
、INSERT INTO
(的事务块之外。