0
임 저장 프로 시저를 만들었습니다. UserCategoryCode
및 UserCategoryName
, 기존 레코드를 확인하고 싶습니다. existing record
을 만들지 만 정확하게 수행하지 않으려면 UserCategoryCode,
어떻게해야합니까? 메신저저장 프로 시저가 유효하지 않음
SP 작동합니다 (UserCategoryName
에 대한 작업을) 그렇게하려고 노력하지만,하지
ALTER PROCEDURE [dbo].[UserCategories_InsertUpdate]
@UserCategoryId int,
@UserCategoryCode varchar(50),
@UserCategoryName varchar(250),
@Remarks nvarchar(max),
@StatusId int,
-- @StatusChangeDate DATETIME,
@CreateId int,
@Mode varchar(50),
@iOutput int output
AS
BEGIN
BEGIN TRY
BEGIN TRAN
IF @Mode = 'Add'
BEGIN
IF NOT EXISTS (SELECT UserCategoryCode,UserCategoryName FROM UserCategories WHERE UserCategoryCode = @UserCategoryCode AND UserCategoryName = @UserCategoryName)
BEGIN
INSERT INTO UserCategories(
UserCategoryCode,
UserCategoryName,
StatusId,
StatusChangeDate,
CreateBy,
CreatedDate,
Remarks
)
VALUES(
@UserCategoryCode,
@UserCategoryName,
@StatusId,GETDATE(),
@CreateId,GETDATE(),
@Remarks
)
SET @iOutput = 1 --save successful--
END
ELSE
BEGIN
SET @iOutput=-3 --existing record--
END
END
ELSE IF @Mode = 'Modify'
BEGIN
UPDATE UserCategories
SET UserCategoryCode = @UserCategoryCode,
UserCategoryName = @UserCategoryName,
StatusId = @StatusId,
Remarks = @Remarks,
EditBy = @CreateId,
EditDate = GETDATE()
WHERE UserCategoryId = @UserCategoryId
SET @iOutput = 2 --save successful--
END
COMMIT
END TRY
BEGIN CATCH
print ERROR_MESSAGE()
SET @iOutput = -2 --sp error--
ROLLBACK
END CATCH
END
사용 된 dbms에 태그를 지정하십시오. (이 코드는 ANSI SQL과 전혀 다르게 보입니다 ...) – jarlh
선생님, 조언을 주셔서 감사 드리며 명확하지 않습니다. 설명해 주시겠습니까? SQL 초심자, 배우고 싶습니다. advice :)'(표준, 다른 버전의 SQL 언어가 있습니다. 그러나 ANSI 표준을 따르려면 모두 주요 명령을 지원해야합니다.) ' – Codeone
SQL은 ANSI/ISO에서 지정한 언어입니다. 대부분의 dbms 제품에는 해당 표준에 가까운 SQL 구현이 있습니다. 그러나 저장 프로 시저의 경우 대부분의 제품에는 자체 버전이 있습니다. 귀하의 코드는 ANSI SQL과 호환되지 않습니다. 사용중인 dbms에 태그를 달면 질문에 더 많은주의를 기울이고 더 나은 답변을 얻을 수 있습니다 - 더 빨리! – jarlh