谁能给翻译一下
<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>