createQuery <- function()

in R/R/storedProcedure.R [404:446]


createQuery <- function(connectionString, name, ...)
{
    # Get and process params from the stored procedure in the database
    #
    storedProcParams <- getSprocParams(connectionString = connectionString, name = name)
    params <- storedProcParams$inputParams
    inList <- c()

    if (!is.null(params))
    {
        for (i in seq_len(nrow(params)))
        {
            parameter_outer <- params[i,]$Parameter_name
            parameter <- gsub('.{6}$', '', parameter_outer)
            parameter <- gsub('@','', parameter)
            type <- params[i,]$Type

            inList <- c(inList,parameter)
        }
    }

    inLabels <- NULL
    if (!(length(list(...)) == 1 && is.null(list(...)[[1]])))
    {
        inLabels <- labels(list(...))
        if (!all(inLabels %in% inList))
        {
            stop("You must provide named arguments that match the parameters in the stored procedure.")
        }
    }

    # add necessary variable declarations and value assignments
    #
    query <- paste0("exec ", name)
    for (p in inList)
    {
        paramName <- p
        query <- paste0(query, " @", paramName, "_outer = ?,")
    }

    query <- gsub(",$", "", query)
    list(query=query, inputParams=inList)
}