<cfif (NOT CompareNoCase(#opCode#,"GetProcedures"))>
|
<cfquery name="ResultSet" datasource=#ConnectionString# username=#UserName# password=#Password#>
|
SELECT sysobjects.name as PROCEDURE_NAME,sysusers.name as PROCEDURE_SCHEMA
|
FROM sysobjects,sysusers
|
WHERE sysobjects.uid=sysusers.uid AND sysobjects.type='P' ORDER BY PROCEDURE_NAME
|
</cfquery>
|
</cfif>
|
<cfif (NOT CompareNoCase(#opCode#,"GetParametersOfProcedure"))>
|
<cfif IsDefined("ProcName")>
|
<cfquery name="ResultSet" datasource=#ConnectionString# username=#UserName# password=#Password#>
|
SELECT syscolumns.name As 'PARAMETER_NAME', systypes.name As 'DATA_TYPE', syscolumns.isoutparam As 'PARAMETER_TYPE'
|
FROM syscolumns, sysobjects, systypes
|
WHERE syscolumns.id = sysobjects.id
|
AND systypes.xtype = syscolumns.xtype
|
AND sysobjects.XTYPE = 'P'
|
AND sysobjects.name = '#ProcName#'
|
AND systypes.name in (select name from master.dbo.systypes) and systypes.name <> 'sysname'
|
order by syscolumns.colid
|
</cfquery>
|
</cfif>
|
</cfif>
|
<cfif (NOT CompareNoCase(#opCode#,"ExecuteSP"))>
|
<cfif IsDefined("ExecProcName")>
|
<cfscript>
|
dotIndex = Find("dbo.",#ExecProcName#);
|
if (dotIndex GT 0)
|
{
|
#ExecProcName# = Mid(#ExecProcName#,dotIndex+4,Len(#ExecProcName#)-dotIndex);
|
}
|
</cfscript>
|
<cfquery name="ProcParams" datasource=#ConnectionString# username=#UserName# password=#Password#>
|
SELECT syscolumns.name As 'PARAMETER_NAME', systypes.name As 'DATA_TYPE', syscolumns.isoutparam As 'PARAMETER_TYPE'
|
FROM syscolumns, sysobjects, systypes
|
WHERE syscolumns.id = sysobjects.id
|
AND systypes.xtype = syscolumns.xtype
|
AND sysobjects.XTYPE = 'P'
|
AND sysobjects.name = '#ExecProcName#'
|
AND systypes.name in (select name from master.dbo.systypes) and systypes.name <> 'sysname'
|
order by syscolumns.colid
|
</cfquery>
|
<cfscript>
|
CallStatement = "{call ";
|
CallStatement = CallStatement & #ExecProcName#;
|
if (ProcParams.RecordCount GT 0)
|
{
|
CallStatement = CallStatement & "(";
|
MM_columns = ListToArray(ProcParams.ColumnList,",");
|
For (i=1; i LTE ProcParams.RecordCount ; i=i+1)
|
{
|
paramdirection = ProcParams["PARAMETER_TYPE"][i];
|
paramtype = ProcParams["DATA_TYPE"][i];
|
delimiter = "";
|
defaultvalue = 0;
|
|
switch (paramtype)
|
{
|
case "char":
|
case "nchar*":
|
case "varchar":
|
case "nvarchar*":
|
case "date":
|
case "datetime":
|
case "smalldatatime":
|
{
|
delimiter = "'";
|
defaultvalue = "";
|
break;
|
}
|
default:
|
{
|
delimiter = "";
|
}
|
}
|
|
if (paramdirection GT 0)
|
{
|
if(i GT 1)
|
{
|
CallStatement = CallStatement & ",";
|
}
|
|
CallStatement = CallStatement & delimiter & defaultvalue & delimiter;
|
}
|
else
|
{
|
if(i GT 1)
|
{
|
CallStatement = CallStatement & ",";
|
}
|
|
CallStatement = CallStatement & delimiter & ProcParams["PARAMETER_NAME"][i] & delimiter;
|
}
|
}
|
|
CallStatement = CallStatement & ")";
|
}
|
|
MM_params = ListToArray(#ExecProcParameters#,",");
|
For (i=1; i LTE ArrayLen(MM_params); i=i+2)
|
{
|
MM_paramName = MM_params[i];
|
MM_paramValue = MM_params[i+1];
|
if (MM_paramValue EQ "empty")
|
{
|
MM_paramValue = "";
|
}
|
CallStatement = REReplaceNoCase(CallStatement,MM_paramName,MM_paramValue);
|
}
|
CallStatement = CallStatement & "}";
|
</cfscript>
|
<cfquery name="ResultSet" datasource=#ConnectionString# username=#UserName# password=#Password# MaxRows=#MaxRows#>
|
#PreserveSingleQuotes(CallStatement)#
|
</cfquery>
|
</cfif>
|
</cfif>
|