Sqlserver Storage Process - - - 전송 배열, 루프 사용
얼마 전에 한 회사 내부의 직원 프로젝트 관리 시스템을 했는데 그 사이에 qlserver 저장 과정은 excel 파일에서 직원의 프로젝트 정보를 읽고db에서 관련된 다른 정보를 찾아서 직원 테이블에 삽입하는 것이다.여기에는 두 가지 난점이 있다. 어떻게 저장 프로세스에 여러 개의 기록을 전달합니까?저장 과정 중에 어떻게 이 기록들을 하나하나 순환 처리합니까?
솔루션:
1. excel에서 데이터를 어떻게 저장 과정에 전송합니까?
저장 프로세스는 수조 매개 변수를 받아들일 수 없다. 나의 방법은 excel의 정보를 전체 국면의 임시 테이블에 가져오고 임시 테이블의 이름을 저장 프로세스에 전달하며 저장 과정에서 임시 테이블 내용을 사용한다.
2. 저장 과정 중 어떻게 순환 처리를 합니까?
저장 과정에서 임시 테이블을 새로 만들면 전달된 전역 임시 테이블의 정보를 이 테이블에 저장하고 테이블에 id열을 추가하여 기록을 처음부터 계산합니다.count 함수를 사용하여 기록된 개수를 계산하고while 문장을 사용하여 id를 1에서count로 순환합니다
코드:
1.임시 테이블을 만들려면 다음과 같이 하십시오.
IF OBJECT_ID('dbo.create_tempTable') IS NOT NULL
DROP PROC dbo.create_tempTable;
GO
CREATE PROC dbo.create_tempTable
AS
CREATE TABLE ##tempexcel(
pjid char(6),-- id
userid char(6),-- id
PRIMARY KEY(pjid, userid)
)
GO
2. 구체적인 작업의 저장 프로세스:
IF OBJECT_ID('dbo.Staff_insert') IS NOT NULL
DROP PROC dbo.Staff_insert;
GO
CREATE PROC dbo.Staff_insert
@temptableName nvarchar(20)--
AS
BEGIN
-- ,intID 1
CREATE TABLE #excelData(intID int identity(1,1),pjid char(6),userid char(6));
--
INSERT INTO #excelData(pjid,userid) EXEC('SELECT pjid, userid FROM '+ @temptableName);
--
SELECT @count= COUNT(1) FROM #excelData;
-- ,
IF(@count > 0)
BEGIN
SET @i = 1;--
WHILE(@i <= @count)
BEGIN
-- intid
SELECT @pjid=pjid,@userid=userid FROM #excelData WHERE intID = @i;
--
--
--
END
END
END
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.