2011-12-26 3 views
1

C#으로 프로젝트를 만들고 SQL Server 2008 데이터베이스에 연결했습니다. 프로 시저를 만들었지 만 오류가 계속 발생하여 찾을 수 없습니다. 재미있는 점은 동일한 스크립트에서 2 개의 프로 시저를 더 생성했는데 모든 것이 잘 작동한다는 것입니다.SQL Server 저장 프로 시저를 찾을 수 없습니다.

먼저 스크립트를 읽고 모든 코드를 실행하면 매우 잘 통과합니다. 그런 다음 하나의 테이블이 만들어지고 두 개의 절차가 완료되고 마침내 마지막 프로 시저가 발생하지만 오류가 계속 발생합니다. 당신이 내가 잘못한 것을 볼 수 있도록 몇 가지 코드를 넣을 것입니다.

IF object_id('Uporabniki') IS NULL 
CREATE TABLE Uporabniki 
    (
     id_uporabnika int, 
     ime_uporabnika nvarchar(200) not NULL, 
     skupina_uporabnika nvarchar(200) not NULL, 
     PRIMARY KEY (id_uporabnika) 
    ) 
GO 

IF object_id('Dodaj_uporabnika') IS NULL 
EXEC sp_executesql N' 
CREATE PROCEDURE Dodaj_uporabnika 
    -- Add the parameters for the stored procedure here 
    @ime_uporabnika nvarchar(200), 
    @skupina_uporabnika nvarchar(200) 

AS 
BEGIN 
    DECLARE @id_konec INT 
     SET @id_konec=(SELECT MAX(id_uporabnika) FROM Uporabniki); 
     IF(@id_konec IS NULL) 
      BEGIN 
       SET @id_konec= 1 
       insert into Uporabniki (id_uporabnika,ime_uporabnika, skupina_uporabnika) values (@id_konec, @ime_uporabnika,@skupina_uporabnika); 
      END 
     ELSE 
     BEGIN 
      insert into Uporabniki (id_uporabnika,ime_uporabnika, skupina_uporabnika) values (@id_konec + 1, @ime_uporabnika,@skupina_uporabnika); 
     END 
END' 
GO 

IF object_id('Spremeni_uporabnika') IS NULL 

EXEC sp_executesql N' 
CREATE PROCEDURE Spremeni_uporabnika 
    -- Add the parameters for the stored procedure here 
    @stari_id int, 
    @novo_ime_uporabnika nvarchar(200), 
    @nova_skupina_uporabnika nvarchar(200) 

AS 
BEGIN 
    BEGIN 
     UPDATE Uporabniki SET [email protected]_ime_uporabnika,[email protected]_skupina_uporabnika WHERE @stari_id=id_uporabnika; 
    END 
END' 
GO 

IF object_id('Brisanje_uporabnika') IS NULL 

EXEC sp_executesql N' 
CREATE PROCEDURE Brisanje_uporabnika 
    -- Add the parameters for the stored procedure here 
    @id_uporabnika int 

AS 
BEGIN 
    BEGIN 
     DELETE * FROM Uporabniki WHERE @id_uporabnika = id_uporabnika; 
    END 
END' 
GO 
+2

스크립팅과 동적 SQL 사용의 두 가지 문제점이 있습니다. –

+1

프로 시저 스키마를 확인 했습니까? 스키마를 호출에 추가하고 어떤 일이 발생하는지 확인합니다. – rcdmk

답변

5

DELETE * FROM Uporabniki 그렇게 Brisanje_uporabnika가 생성되지 않습니다 유효하지 않은 구문입니다.

사용

DELETE FROM Uporabniki 대신. 이 스크립트를 제출하는 방법을 모르지만 실행시 다음 오류가 표시되어야합니다.

메시지 102, 수준 15, 상태 1, 프로 시저 Brisanje_uporabnika, 9 호선

근처의 구문이 잘못되었습니다 '*'.

+0

Hehe 좋은 눈 남자! 고마워요! –

+1

@Denonth : 그 답이 당신의 문제를 해결했다면 ** 그 대답을 수락하는 버릇을 따라주십시오. StackOverflow에서하는 것이 옳고 예의 바른 일이며 다른 사람들이 답변을 찾는 사람들을 계속 도울 수있는 인센티브가됩니다. [FAQ보기] (http://meta.stackexchange.com/questions/5234/accepting-answers-what-is-it-all-about) –

관련 문제