실행하려고하면 SqlException 메시지가 "잘못된 구문을 'PROCEDURE'키워드 근처에 가져옵니다."잘못된 SQL 구문 오류 ADO.NET
120: cmd.CommandText = @"CREATE PROCEDURE FindState @Name nvarchar(50)
AS SELECT IDState FROM State WHERE [email protected]";
121: cmd.ExecuteNonQuery();
스택 추적 :
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
at xxx.Program.Main(String[] args) in C:\xxx\Program.cs:line 121
그러나 나는 SQL 쿼리에서 직접 SQL 명령을 복사하고 실행을 시도하고 일했다.
SqlParameter stateName = new SqlParameter();
stateName.SqlDbType = SqlDbType.NVarChar;
stateName.Direction = ParameterDirection.Input;
stateName.ParameterName = "@Name";
stateName.Size = 50;
Console.Write("Enter state name: ");
stateName.Value = Console.ReadLine();
cmd.Parameters.Add(stateName);
cmd.CommandText = "IF EXISTS (SELECT name FROM sysobjects WHERE name='FindState' AND type='P') DROP PROCEDURE FindState";
cmd.ExecuteNonQuery();
cmd.CommandText = "CREATE PROCEDURE FindState
@Name nvarchar(50)
AS
BEGIN
SELECT IDState FROM State WHERE [email protected]";
END
cmd.CommandType = CommandType.StoredProcedure;
cmd.ExecuteNonQuery();
cmd.CommandText = "FindState";
sdr = cmd.ExecuteReader();
if (sdr.HasRows)
{
while (sdr.Read())
{
Console.WriteLine("ID state " + stateName.Value + " is " + sdr[0]);
}
}
else
{
Console.WriteLine("No such state exists");
}
sdr.Close();
없음 erorr 메시지가 작동하지 않습니다. – TomTom
에 대해이 절차 FindState (@Name의 NVARCHAR (50)) 이름 = @ 이름이 이전과 – CjCoax
매개 변수 주위에 괄호를 넣어 시도 저장된 프로 시저 매개 변수 후에 열고 닫는 중괄호주의 국가로부터 SELECT IDState AS 를 작성하는 방법 그러나 그것은 작동하지 않았다. – HomeIsWhereThePcIs