in R/R/sqlPackage.R [2366:2424]
sqlEnumTable <- function(connectionString, packagesNames, owner, scopeint, languageName)
{
g_scriptFile <- local(g_scriptFile, install.env)
queryUser <- "CURRENT_USER"
if (scopeint == 0) # public
{
currentUser <- sqlSelectUser(connectionString);
if (currentUser == "dbo")
{
queryUser = "CURRENT_USER"
}
else
{
queryUser = "'dbo'"
}
}
else if (nchar(owner) > 0)
{
queryUser <- paste0("'", owner, "'")
}
query <- paste0(
" DECLARE @currentUser NVARCHAR(128);",
" DECLARE @principalId INT;"
)
query <- paste0(query, " SELECT @currentUser = ", queryUser, ";")
query <- paste0(query,
" SELECT @principalId = USER_ID(@currentUser);",
" SELECT elib.name",
" FROM sys.external_libraries AS elib",
" WHERE elib.name in (",
paste0("'", paste(packagesNames, collapse = "','"), "'"),
")",
" AND elib.principal_id=@principalId",
" AND elib.language='", languageName,"' AND elib.scope=", scopeint,
" ORDER BY elib.name ASC",
" ;"
)
if(!is.null(g_scriptFile))
{
cat(query, file=g_scriptFile, append=TRUE)
cat("\n", file=g_scriptFile, append=TRUE)
}
sqlResult <- execute(connectionString, query)
resultdf <- data.frame(Package = packagesNames, Found = rep(FALSE, length(packagesNames)), row.names = packagesNames, stringsAsFactors = FALSE)
if (is.data.frame(sqlResult))
{
resultdf[sqlResult[,"name"],"Found"] <- TRUE
}
return(resultdf)
}