MSSQL 프로시저 질문입니다 0 1 1,614

by 시리 [SQL Query] [2017.11.28 10:36:04]


너무 기초적인 것이지만 프로시저를 처음 써봐서 못 찾고 있습니다 ㅠㅠ...


INSERT INTO CM_DEPT (DEPT_ID, REG_DT, REG_USER_ID, DEPT_NM, DEPT_ORD, USE_FL, UPPER_DEPT_ID)
VALUES('부서아이디', getdate(), 'admin', '부서명', 순서, 'Y', 'temp')

 


INSERT INTO CM_USER (USER_ID, AUTH_CD, REG_DT, REG_USER_ID, COMPANY_CD, ENTERPRIZED_ID, PASSWORD, USER_NM, DEPT_ID, POSI_ID, STATUS_CD, MIDDLE_MANAGE_FL, CU_AFFILIATE_CD, CU_PERSONAL_NUMBER)
VALUES('사용자아이디', 'ROLE_USER', getdate(), 'admin', 'WFG-D656-DC02-DBBE', 'WOORIBACKG-0C81-D261-4203', 'A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ=', '사용자이름', '좀전에 만든 부서명', 'POSI_000000000000008', 'WorkStatus1', 'N', 'WR1', 주민등록번호 앞자리임 숫자임)

 

1. 부서를 만들고

2. 그 부서마다 100명씩 넣어 주고 싶은데

 

3. 이 동작을 열번 정도 반복하고 싶습니다...

4. 이 동작을 반복시 부서명과 아이디는 기본 부서명 + int로 뒤에 증가값 붙여 줌

5. 사용자명도 기본 사용자명과 사용자 아이디도 + int로 뒤에 증가값 붙여서 만들고 싶습니다

 

그런데 프로시저에서 변수를 선언하고 정의하는 걸 어떤 식으로 해야 하는지 정확히 모르겠습니다...


CREATE PROCEDURE CREATE_TEST_DEPTS_AND_USERS
@TEMP_DEPTID VARCHAR(10),
@TEMP_DEPTNAME VARCHAR(10),
@TEMP_DEPTORDER INT,

@TEMP_USERID VARCHAR(10),
@TEMP_USERNAME VARCHAR(10),
@TEMP_PERSONAL_NUMBER INT

AS

 

한 뒤에 쭉 써야 한다고 생각했는데 서치를 해봐도 형식을 잘 모르겠습니다...

도움 부탁드립니다

 

 

 

+ 뭔가 제가

 

1. 2중 WHILE을 쓰면 되겠다고 생각이 들어서

 


CREATE PROCEDURE testDU
DECLARE @CNT INT
DECLARE @I INT
DECLARE @TEMP_DEPTID VARCHAR(10)
DECLARE @TEMP_DEPTNAME VARCHAR(10)
DECLARE @TEMP_DEPTORDER INT

DECLARE @TEMP_USERID VARCHAR(10)
DECLARE @TEMP_USERNAME VARCHAR(10)
DECLARE @TEMP_PERSONAL_NUMBER INT
SET
@I = 0
@CNT = 10

WHILE(@I<@CNT)
BEGIN

 INSERT INTO CM_DEPT (DEPT_ID, REG_DT, REG_USER_ID, DEPT_NM, DEPT_ORD, USE_FL, UPPER_DEPT_ID)
 VALUES('부서아이디', getdate(), 'admin', '부서명', 순서, 'Y', 'temp')
 
 SET @I = @I+1

END

INSERT INTO CM_USER (USER_ID, AUTH_CD, REG_DT, REG_USER_ID, COMPANY_CD, ENTERPRIZED_ID, PASSWORD, USER_NM, DEPT_ID, POSI_ID, STATUS_CD, MIDDLE_MANAGE_FL, CU_AFFILIATE_CD, CU_PERSONAL_NUMBER)
VALUES('사용자아이디', 'ROLE_USER', getdate(), 'admin', 'WFG-D656-DC02-DBBE', 'WOORIBACKG-0C81-D261-4203', 'A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ=', '사용자이름', '좀전에 만든 부서명', 'POSI_000000000000008', 'WorkStatus1', 'N', 'WR1', 주민등록번호 앞자리임 숫자임)

 

END

 

이렇게 만들어 놓고는 또 헤메고 있습니다... ㅠㅠ

 

by 시리 [2017.11.28 13:09:11]

자답입니다

-- ================================================
-- 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].[CREATE_TEST_DEPT_USER]
 -- Add the parameters for the stored procedure here
 --<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,
 --<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
 DECLARE @CNT INT
 DECLARE @CNT2 INT
 DECLARE @I INT
 DECLARE @J INT
 DECLARE @TEMP_DEPT VARCHAR(20)
 DECLARE @TEMP_USER VARCHAR(20)

 SET @CNT = 10
 SET @CNT2 = 100
 SET @I=0
 SET @J=0
 SET @TEMP_DEPT = 'TempDept_'
 SET @TEMP_USER = 'TempUser_'

 WHILE(@I < @CNT)
 BEGIN

  INSERT INTO CM_DEPT (DEPT_ID, REG_DT, REG_USER_ID, DEPT_NM, DEPT_ORD, USE_FL, UPPER_DEPT_ID)
  VALUES(@TEMP_DEPT + CONVERT(VARCHAR,@I), getdate(), 'admin', @TEMP_DEPT + CONVERT(VARCHAR,@I), @I, 'Y', 'temp')
  
  
  WHILE(@J < @CNT2)
  BEGIN
   INSERT INTO CM_USER (USER_ID, AUTH_CD, REG_DT, REG_USER_ID, COMPANY_CD, ENTERPRIZED_ID, PASSWORD, USER_NM, DEPT_ID, POSI_ID, STATUS_CD, MIDDLE_MANAGE_FL, CU_AFFILIATE_CD)
   VALUES( CONVERT(VARCHAR,@I) + @TEMP_USER + CONVERT(VARCHAR,@J), 'ROLE_USER', getdate(), 'admin', 'WFG-D656-DC02-DBBE', 'WOORIBACKG-0C81-D261-4203', 'A6xnQhbz4Vx2HuGl4lXwZ5U2I8iziLRFnhP5eNfIRvQ=', CONVERT(VARCHAR,@I) + @TEMP_USER + CONVERT(VARCHAR,@J), @TEMP_DEPT + CONVERT(VARCHAR,@I), 'POSI_000000000000008', 'WorkStatus1', 'N', 'WR1')
   
   SET @J = @J+1
  END


  SET @I = @I+1
  SET @J = 0
 END
END
GO

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입