日期:2014-05-18  浏览次数:20575 次

T-SQL存储过程嵌套问题
在一个存储过程里,如果把一些特定的处理,像PL/SQL里一样,写成内置的存储过程可以吗?该如何写?

SET   ANSI_NULLS   ON
GO
SET   QUOTED_IDENTIFIER   ON
GO

--   =============================================
--   Author:             Fsolsh)Andy
--   Create   date:   2007/09/30
--   =============================================
ALTER   PROCEDURE   [dbo].[FPN02B00]
AS
-----------------------BEGIIN-----------------------
PROCEDURE   PROCE1
AS
BEGIN
SELECT  
                @KANA_NAME1   =   ISNULL(KN_KANA1, 'here ')   ,  
                @KANA_NAME1   =   ISNULL(KN_KANA2, 'here ')  
FROM  
                DBO.M_X010  
WHERE  
                CD_KEY   =   @KB_KEY_054  
                AND   KB_KEY   =   @KB_BANK_HURIKOMI
END
-----------------------END-----------------------
BEGIN
        DO   SOMETHING
END
GO

SET   ANSI_NULLS   OFF
GO
SET   QUOTED_IDENTIFIER   OFF
GO


如上所示是整个存储过程的结构,PROCEDURE   [dbo].[FPN02B00]的程序体忽略,PROCEDURE   PROCE1这一块该怎么写?


------解决方案--------------------
写在外面
------解决方案--------------------
方法1:

单独创建存储过程PROCE1,@KANA_NAME1和@KANA_NAME2为输出参数,@KB_KEY_054和@KB_BANK_HURIKOMI为输入参数。

存储过程FPN02B00内部再调用PROCE1。

方法2:
将PROCE1的功能,直接在FPN02B00内部写。