스칼라 변수를 선언해야합니다.
@RowFrom int
@RowTo int
T-SQL을 사용하여 저장 프로 시저에 대한 전역 입력 매개 변수이며 T-SQL을 사용하여 저장 프로 시저 내에서 SQL 쿼리를 선택 Exec(@sqlstatement)
저장 다음 저장 프로 시저 끝에서 사용 하여 결과를 표시합니다. @RowFrom
또는 @RowTo
내에서 실행 @sqlstatement
되는 변수 ..하시기 바랍니다 도움 .. 잘 달리 작동합니다.
"Must declare the scalar variable "@RowFrom"."
또한 @sqlstatement
변수에 다음을 포함 해 보았습니다 .
'Declare @Rt int'
'SET @Rt = ' + @RowTo
그러나 @RowTo
여전히 그 값을 전달하지 않고 @Rt
생성합니다.
int를 능가하지 않습니다. 대신에 :
SET @sql = N'DECLARE @Rt INT; SET @Rt = ' + @RowTo;
다음이 필요합니다.
SET @sql = N'DECLARE @Rt INT; SET @Rt = ' + CONVERT(VARCHAR(12), @RowTo);
여기서 무슨 일이 일어나고 있는지 설명하기 위해. @RowTo = 5라고합시다.
DECLARE @RowTo INT;
SET @RowTo = 5;
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT ' + CONVERT(VARCHAR(12), @RowTo) + ' * 5';
EXEC sp_executeSQL @sql;
이를 통해 만들려면 (궁극적으로 숫자가 되겠) 변환합니다. 그러나 보시다시피 숫자는 실행될 때 여전히 숫자로 취급됩니다. 답은 25입니다. 맞죠?
귀하의 경우에는 @sql 높은 곳에서 @Rt 등을 다시 사용할 필요가 다음과 같이 말하면됩니다.
SET @sql = @sql + ' WHERE RowNum BETWEEN '
+ CONVERT(VARCHAR(12), @RowFrom) + ' AND '
+ CONVERT(VARCHAR(12), @RowTo);
보다 좋을지라도, 바람직하게 들어
SET @sql = @sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;';
EXEC sp_executesql @sql,
N'@RowFrom INT, @RowTo INT',
@RowFrom, @RowTo;
COLLATION 설정에 따라 다음과 같은 명령문을 보관할 수 있습니다.
SET @sql = @Sql + ' WHERE RowNum BETWEEN @RowFrom AND @RowTo;';
예를 들어 S를 입력하면
SET @sql = @***S***ql
이미 여기에 게시 된 답변을 분리해서 미안하지만이보고 된 오류의 실제 인스턴스입니다.
또한 오류는 메시지에 대문자 S를 표시하지 않습니다. 이유는 잘 모르겠지만 그 이유는
Set @sql =
등호 왼쪽에 있습니다.
이 MSDN 블로그에 따라 맞춤법 오류가 용의자 인 나를 위해 수정 된 것을 추가하십시오 ...
여러 줄에 여러 줄에있는 SQL 문자열을 분할 할 때 SQL 문자열을 구분하고 연결하지 않고 쉼표로 구분하고 각 줄의 공백이 누락되지 않았는지 확인합니다. 로켓 과학은 내가 누군가의 두통을 구하기를 바랍니다.
예를 들면 :
db.TableName.SqlQuery(
"SELECT Id, Timestamp, User " +
"FROM dbo.TableName " +
"WHERE Timestamp >= @from " +
"AND Timestamp <= @till;" + [USE COMMA NOT CONCATENATE!]
new SqlParameter("from", from),
new SqlParameter("till", till)),
.ToListAsync()
.Result;
변수가 이전에 선언 GO
되고 이후에 참조 될 경우 에도이 오류 메시지를받을 수 있습니다 .
대소 문자 구분 도이 문제를 유발합니다.
@MyVariable 및 @myvariable은 SQL Server Man에서 동일한 변수입니다. 스튜디오와 작동합니다. 그러나 이러한 변수는 대 / 소문자 구분 차이로 인해 Visual Studio (C #)에서 "스칼라 변수"@MyVariable "을 선언해야합니다."가됩니다.
미래의 나를위한 대답입니다 (다른 사람에게도 도움이 될 수 있습니다!). 쿼리 편집기에서 다음과 같이 실행하려고하면 :
USE [Dbo]
GO
DECLARE @RC int
EXECUTE @RC = [dbo].[SomeStoredProcedure]
2018
,0
,'arg3'
GO
SELECT month, SUM(weight) AS weight, SUM(amount) AS amount
FROM SomeTable AS e
WHERE year = @year AND type = 'M'
그리고 오류가 발생합니다.
스칼라 변수 "@year"를 선언해야합니다.
저장 프로 시저 실행 과 그 아래에 쿼리 (!)를 모두 포함하는 코드를 실행하려고하기 때문 입니다. 실행하려는 항목을 강조 표시하거나 관심이없는 항목을 삭제 / 주석 처리하십시오.
참고 URL : https://stackoverflow.com/questions/7181976/must-declare-the-scalar-variable
'ProgramingTip' 카테고리의 다른 글
코드 흐름을하는 도구 (C / C ++) (0) | 2020.11.02 |
---|---|
"다중 대상 패턴"Makefile 오류 (0) | 2020.11.02 |
셸 명령의 결과로 CMake 변수를 초기화하는 방법 (0) | 2020.11.02 |
log4net 대 TraceSource (0) | 2020.11.02 |
모든 Scalatest 테스트 전후에 조치 수행 (0) | 2020.11.02 |