저장 프로세스를 통해 데이터 스크립트 생성
16701 단어 저장 프로세스
며칠 전에 인터넷에서 봤던 관련 스크립트에 따라 이 기능을 실현할 수 있는 저장 과정을 다시 정리했습니다. 여러분이 사용해 보신 것을 환영합니다. 질문이나 버그가 있으면 저에게 메시지를 남겨주세요.
쓸데없는 말은 그만하고 코드를 말해라.
USE [test]
GO
/****** Object: StoredProcedure [dbo].[pr_OutputData] Script Date: 03/05/2015 15:41:47 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Echo >
-- Create date: <2015-02-21>
-- Description: < >
-- =============================================
ALTER PROCEDURE [dbo].[pr_OutputData]
@TABLE VARCHAR(50),
@TTYPE BIT = 0 --0:
--1: WHERE 1, WHERE
AS
BEGIN
SET NOCOUNT ON;
IF OBJECT_ID(@TABLE) IS NULL
BEGIN
PRINT @TABLE+' '
RETURN
END
DECLARE @SQL1 VARCHAR(4000)
DECLARE @TYPE INT
DECLARE @COLUMN VARCHAR(2000)
DECLARE @COLUMN_NAME VARCHAR(100)
DECLARE @DATA VARCHAR(3000)
SET @COLUMN = ''
SET @COLUMN_NAME = ''
SET @DATA = ''
SET @SQL1 = ''
DECLARE CUR CURSOR FOR SELECT NAME,USER_TYPE_ID FROM SYS.COLUMNS WHERE OBJECT_ID = OBJECT_ID(@TABLE) AND is_identity <> 1 --
OPEN CUR
FETCH NEXT FROM CUR INTO @COLUMN_NAME,@TYPE
WHILE @@FETCH_STATUS=0
BEGIN
SET @COLUMN = @COLUMN+CASE WHEN LEN(@COLUMN)=0 THEN '' ELSE ','END + @COLUMN_NAME
SET @DATA = @DATA +CASE WHEN LEN(@DATA)=0 THEN '' ELSE ','','','END +
CASE WHEN @TYPE IN(167,175) THEN '''''''''+'+@COLUMN_NAME+'+''''''''' --VARCHAR,CHAR
WHEN @TYPE IN(35,241) THEN '''''''''+CAST('+@COLUMN_NAME+' AS VARCHAR(MAX))+''''''''' --TEXT,XML
WHEN @TYPE IN(231,239) THEN '''N''''''+'+@COLUMN_NAME+'+''''''''' --NVARCHAR,NCHAR
WHEN @TYPE=61 THEN '''''''''+CONVERT(VARCHAR(23),'+@COLUMN_NAME+',121)+''''''''' --DATETIME
WHEN @TYPE=58 THEN '''''''''+CONVERT(VARCHAR(16),'+@COLUMN_NAME+',120)+''''''''' --SMALLDATETIME
WHEN @TYPE=36 THEN '''''''''+CONVERT(VARCHAR(36),'+@COLUMN_NAME+')+''''''''' --UNIQUEIDENTIFIER
ELSE @COLUMN_NAME
END
FETCH NEXT FROM CUR INTO @COLUMN_NAME,@TYPE
END
CLOSE CUR
DEALLOCATE CUR
--PRINT @COLUMN
--PRINT @DATA
SET @SQL1=' SELECT ''INSERT INTO '+@TABLE+'('+@COLUMN+') VALUES(''AS ''COL'','+@DATA+','')'' FROM '+@TABLE
IF(@TTYPE = 0)
BEGIN
EXEC (@SQL1)
END
ELSE
BEGIN
PRINT @SQL1
END
END
이것은 설날에 쓴 것으로 비교적 간단하며, 자동 키 필터와where 조건 필터 기능만 추가했다.나중에 필요에 따라 수정하면 언제든지 최신 버전으로 올릴게요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 호출 Oracle 스토리지 프로세스 상세 정보Java 호출 Oracle 스토리지 프로세스 상세 정보 단계: 1. Oracle 스토리지 프로세스 작성 2. 데이터베이스 작성 연결 도구 클래스 얻기 3. 간단한 응용 프로그램 호출 저장 프로세스 작성 구현: 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.