프로시저를 사용할때, 동적쿼리를 만들 일이 있으면 아래와 같이 사용하면 됩니다.
동적 쿼리에 파라미터를 사용할 일이 있으면, 아래 방법 외에 다른 방법을 추천합니다.
USE [intraOffice]
GO
/****** Object: StoredProcedure [dbo].[sp_TEST3] Script Date: 10/29/2019 14:33:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[sp_TEST3]
AS
BEGIN
SET NOCOUNT ON;
DECLARE @P1 NVARCHAR(100), @P2 NVARCHAR(100)
SET @P2 = N'ZZZZZZZZZ'
SET @P1 = N'SELECT AGE AS '+@P2+' FROM TEST_TBL WHERE NAME=N''당꿈응''';
Execute sp_executesql @P1
END
프로시저 동적쿼리에 파라미터를 사용하는 경우 아래와 같은 방법을 사용하시면 됩니다.
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [DBO].[sp_test2]
@name nvarchar(10)
AS
BEGIN
SET NOCOUNT ON;
Declare @main_Query nvarchar(100) ,@params nvarchar(50)
Set @main_Query = 'select * from TEST_TBL where Name_kr=@pname'
Set @params = '@pname nvarchar(10)'
EXEC sp_executesql @main_Query,@params, @pname=@name
END
GO