set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
/*
调用方法:
GetExec 'funds_corp_BizApply',2
*/
ALTER PROCEDURE [dbo].[GetExec]
@PrcName VARCHAR(100), --存储过程名称
@type char(1)=1, --1增删改;2查询
@dbName VARCHAR(50)='SpecialFunds'
AS
SET NOCOUNT ON
DECLARE @P VARCHAR(50)
DECLARE @CLTYPE VARCHAR(10)
DECLARE @TP VARCHAR(50)
DECLARE @PRE VARCHAR(50)
DECLARE @LN VARCHAR(50)
DECLARE @SC VARCHAR(50)
DECLARE @str VARCHAR(500)
DECLARE @intRowcount int
DECLARE @I INT
SET @I=0
CREATE TABLE #TEMP (
C1 VARCHAR(50),
C2 VARCHAR(50),
C3 VARCHAR(50),
P VARCHAR(50),
CLTYPE VARCHAR(50),
C5 VARCHAR(50),
TP VARCHAR(50),
PRE VARCHAR(50),
LN VARCHAR(50),
SC VARCHAR(50),
C6 VARCHAR(50),
C7 VARCHAR(50),
C8 VARCHAR(50),
C9 VARCHAR(50),
C10 VARCHAR(50),
C11 VARCHAR(50),
C12 VARCHAR(50),
C13 VARCHAR(50),
C14 VARCHAR(50),
C15 VARCHAR(50)
)
INSERT INTO #TEMP exec sp_sproc_columns @PrcName, 'dbo', @dbName, NULL, @ODBCVer = 3
SET @intRowcount=@@ROWCOUNT-1
--SELECT P,CLTYPE,TP,PRE,LN,SC FROM #TEMP WHERE C13>0
if @type=1
PRINT 'SqlParameter[] parParms = new SqlParameter['+CONVERT(VARCHAR,@intRowcount+1)+'];'
else
PRINT 'SqlParameter[] parParms = new SqlParameter['+CONVERT(VARCHAR,@intRowcount)+'];'
DECLARE CUR CURSOR FOR SELECT P,CLTYPE,TP,PRE,LN,SC FROM #TEMP WHERE C13>0
OPEN CUR
FETCH NEXT FROM CUR INTO @P,@CLTYPE,@TP,@PRE,@LN,@SC
WHILE @@FETCH_STATUS = 0
BEGIN
SET @str= 'parParms['+CONVERT(VARCHAR,@I)+'] = new SqlParameter("'+@P+'", SqlDbType.'
IF @TP='numeric'
BEGIN
PRINT @str+'Decimal);'
PRINT 'parParms['+CONVERT(VARCHAR,@I)+'].Precision =' +CONVERT(VARCHAR,@PRE)+';'
PRINT 'parParms['+CONVERT(VARCHAR,@I)+'].Scale = '+CONVERT(VARCHAR,@SC)+';'
END
IF @TP IN ('CHAR','VARCHAR')
BEGIN
PRINT @str+'VarChar,'+ CONVERT(VARCHAR,@LN)+');'
END
IF @TP IN ('INT')
PRINT @str+'Int'+');'
IF @TP IN ('DATETIME')
PRINT @str+'DateTime'+');'
IF @CLTYPE='1'
PRINT 'parParms['+CONVERT(VARCHAR,@I)+'].Value = '
IF @CLTYPE='2'
PRINT 'parParms['+CONVERT(VARCHAR,@I)+'].Direction = ParameterDirection.Output; '
SET @I=@I+1
FETCH NEXT FROM CUR INTO @P,@CLTYPE,@TP,@PRE,@LN,@SC
END
CLOSE CUR
DEALLOCATE CUR
IF @type=1
BEGIN
print 'parParms['+CONVERT(VARCHAR,@I)+'] = new SqlParameter("@intRetVal", SqlDbType.Int,4);'
print 'parParms['+CONVERT(VARCHAR,@I)+'].Direction = ParameterDirection.ReturnValue; '
PRINT ' SQLHelper.ExecuteNonQuery(SQLHelper.ConnectionString, CommandType.StoredProcedure, "'+@PrcName+'", parParms);'
-- PRINT 'Selection.exeProc("'+@PrcName+'", parParms);'
PRINT 'if (parParms['+CONVERT(VARCHAR,@I)+'].Value.ToString().Trim().Equals("0"))'
PRINT '{'
PRINT ' Response.Write("<script language=javascript>alert('''+'" + parParms['+CONVERT(VARCHAR,@I-1)+'].Value.ToString().Trim() + "'');window.opener.location.href=window.opener.location.href;window.returnValue=''OK'';parent.close();</script>");'
PRINT '}'
PRINT 'else'
PRINT '{'
PRINT ' Response.Write("<script language=javascript>alert('''+'" + parParms['+CONVERT(VARCHAR,@I-1)+'].Value.ToString().Trim() + "'');</script>");'
PRINT '}'
END
ELSE
print 'parParms['+CONVERT(VARCHAR,@I)+'] = new SqlParameter("@intRetVal", SqlDbType.Int,4);'
print 'parParms['+CONVERT(VARCHAR,@I)+'].Direction = ParameterDirection.ReturnValue; '
PRINT ' SQLHelper.ExecuteDataset(SQLHelper.ConnectionString, CommandType.StoredProcedure, "'+@PrcName+'", parParms);'
PRINT 'if (parParms['+CONVERT(VARCHAR,@I)+'].Value.ToString().Trim().Equals("0"))'
PRINT '{'
PRINT ' Response.Write("<script language=javascript>alert('''+'" + parParms['+CONVERT(VARCHAR,@I-1)+'].Value.ToString().Trim() + "'');window.opener.location.href=window.opener.location.href;window.returnValue=''OK'';parent.close();</script>");'
PRINT '}'
PRINT 'else'
PRINT '{'
PRINT ' Response.Write("<script language=javascript>alert('''+'" + parParms['+CONVERT(VARCHAR,@I-1)+'].Value.ToString().Trim() + "'');</script>");'
PRINT '}'
BEGIN
PRINT 'DisplayGrid1.FillGridData("'+@PrcName+'", parParms);'
END