从存储过程中获取结果R.

时间:2017-07-20 17:48:54

标签: sql sql-server r rodbc

我想知道如何从R中的存储过程中获取结果。我目前正在使用带有RODBC包的RStudio并且正在使用

sqlQuery(conn, 'exec sp_name vars')

作为我的查询。存储过程应该返回一个整数,表示生成数据的新行号。我该怎么做?目前,我得到-2character(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

1 个答案:

答案 0 :(得分:2)

作为评论,因为它可能有助于未来的读者:

对于SQL Server存储过程,添加SET NOCOUNT ON以避免行结果输出可能会干扰要求返回表/查询数据的RODBC sqlQuery

通常对于大多数存储过程,如果需要返回实际数据,请将任何SELECT语句移动到正在执行操作查询的事务块之外(即UPDATEINSERT INTO)。