sqlEnumTable <- function()

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)
}