string Sql = "UPDATE AAA SET " + ColumnName + " = '" + cellContent + "' WHERE Num = '" + CellNum + "'";
위에 것으로 하면 실행이 잘되는데요...
아래 프로시져 실행하면 에러가 납니다....
아무 반응도 없거든요...
CREATE PROCEDURE [dbo].[SP_AAA_DIRDERECT_UPDATE]
@GUBUN CHAR(5),
@ColumName Nvarchar(100) = '',
@cellContent Nvarchar(100) = '',
@CellNum Nvarchar(10) = '',
@message NVARCHAR(2000) output
AS
BEGIN
UPDATE AAA
SET @ColumName = @cellContent
WHERE Num = @CellNum
END
Comment 6
-
블랙조
2013.07.12 11:36
-
삼미슈퍼스타
2013.07.12 12:40
이렇게 했는데요... 업데이트가 안되네요
@ColumName 이걸 실제 컬럼명으로 고정시키면 하면 업데이트가 되는데요...
@ColumName 대입을 시키면 에러가 납니다....
-
화성에서왔어요
2013.07.12 13:43
윗분 쿼리의 @SQL을 print해보니 싱글 쿼테이션 문제네요
SET @SQL += @cellContent 부분을
SET @SQL += '''' + @cellContent + ''''
으로 변경하니까 잘되네요
-
삼미슈퍼스타
2013.07.12 14:42
SET @SQL += '''' + @cellContent + '''' 이렇게 해주었더니 잘되네요
다들 감사요...^^
DECLARE @SQL VARCHAR(500)
SET @SQL = 'UPDATE AAA SET '
SET @SQL += @ColumName
SET @SQL += ' = '
SET @SQL += '''' + @cellContent + ''''EXEC (@SQL)
SET @SQL += ' WHERE Num = '
SET @SQL += @CellNumUPDATE AAA
SET @ColumName = @cellContent
WHERE Num = @CellNum두번째 식으로 작성하면 문제가 있는건가요...??? @ColumName 이부분을 컬럼명으로 고치니까. 되긴하던데
차이점좀 말씀해주시면 감사하겠습니다... 제가 초보라서요...
-
블랙조
2013.07.12 16:40
원래 의도가 @ColumnName 이 바뀌면서(컬럼명) 동적으로 해당 컬럼의 값을 변경하려고 하시는거 같으신데
그럴려면 동적쿼리를 사용하셔야 합니다. 즉 EXEC (sql) 방식으로요 아님 sp_executesql 이던지요...
밑에 사용자님이 작성하신 UPDATE 구문은 해당 테이블의 컬럼값을 변경하는 것이 아니라 @Column 변수의 값을
변경하는 것입니다. 그러니까 테이블에 값이 갱신이 안됩니다.
@Column 안에 있는 값의 컬럼에다가 값을 업데이트하는것은 아닙니다. @Column 변수의 값만 변경이 됩니다.
print @Column 으로 확인해보시면 될듯 합니다.
참고로
UPDATE AAA
SET A = @cellContent, @ColumnName = @cellContent
WHERE Num = @CellNum
이라 하시면 A 칼럼에도 값이 갱신되고, 변수에도 갱신됩니다.
-
삼미슈퍼스타
2013.07.13 03:50
아그렇군요...^^ 이해가 쉽게 되도록 설명해 주셔서 다시 한 번 감사드립니다...
즐거운 주말 되세요...^^
혹시 이걸 원하시는 것인지요?
alter PROCEDURE [dbo].[SP_AAA_DIRDERECT_UPDATE]
@GUBUN CHAR(5),
@ColumName Nvarchar(100) = '',
@cellContent Nvarchar(100) = '',
@CellNum Nvarchar(10) = '',
@message NVARCHAR(2000) output
AS
BEGIN
DECLARE @SQL VARCHAR(500)
SET @SQL = 'UPDATE AAA SET '
SET @SQL += @ColumName
SET @SQL += ' = '
SET @SQL += @cellContent
SET @SQL += ' WHERE Num = '
SET @SQL += @CellNum
EXEC (@SQL)
END