在一个存储过程里,如果把一些特定的处理,像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
GOSET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
如上所示是整个存储过程的结构,PROCEDURE [dbo].[FPN02B00]的程序体忽略,PROCEDURE PROCE1这一块该怎么写?
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
GOSET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
如上所示是整个存储过程的结构,PROCEDURE [dbo].[FPN02B00]的程序体忽略,PROCEDURE PROCE1这一块该怎么写?
ALTER PROCEDURE [dbo].[FPN02B00]
AS
--------------------------------
DECLARE PROCE1 PROCEDURE
AS
BEGIN
END
--------------------------------
BEGIN
END
将PROCE1的功能,直接在FPN02B00内部写。
问题1:打算内嵌的这个存储过程只在一个特定的存储过程中使用,擅自增加开发文件是不符合开发规约的,所以没有采用Limpire兄的方案1。
为题2:打算内嵌的存储过程是在一个循环里重复使用的,因此想把它抽象出来,独立成为一个存储过程,这样也可以提高运行的效率,所以没有采用Limpire兄的方案2。
难道T-SQL里不可以在一个存储过程内部嵌套一个存储过程吗?oracle里是可以的啊。