Incorrect syntax near sql ошибка

I’m trying to run the following fairly simple query in SQL Server Management Studio:

SELECT TOP 1000 * 
FROM 
    master.sys.procedures as procs
left join 
    master.sys.parameters as params on procs.object_id = params.object_id

This seems totally correct, but I keep getting the following error:

Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ».

It works if I take out the join and only do a simple select:

SELECT TOP 1000 *
FROM 
    master.sys.procedures as procs

But I need the join to work. I don’t even have the string » in this query, so I can’t figure out what it doesn’t like.

halfer's user avatar

halfer

19.8k17 gold badges99 silver badges185 bronze badges

asked Nov 1, 2013 at 15:57

Joshua Frank's user avatar

Joshua FrankJoshua Frank

13k11 gold badges46 silver badges95 bronze badges

7

Such unexpected problems can appear when you copy the code from a web page or email and the text contains unprintable characters like individual CR or LF and non-breaking spaces.

halfer's user avatar

halfer

19.8k17 gold badges99 silver badges185 bronze badges

answered Nov 4, 2013 at 8:15

Panagiotis Kanavos's user avatar

5

Panagiotis Kanavos is right, sometimes copy and paste T-SQL can make appear unwanted characters…

I finally found a simple and fast way (only Notepad++ needed) to detect which character is wrong, without having to manually rewrite the whole statement: there is no need to save any file to disk.

It’s pretty quick, in Notepad++:

You should easily find the wrong character(s)

answered May 21, 2019 at 12:50

MAXE's user avatar

2

You can identify the encoding used for the file (in this case sql file) using an editor (I used Visual studio code). Once you open the file, it shows you the encoding of the file at the lower right corner on the editor.

encoding

I had this issue when I was trying to check-in a file that was encoded UTF-BOM (originating from a non-windows machine) that had special characters appended to individual string characters

You can change the encoding of your file as follows:

In the bottom bar of VSCode, you’ll see the label UTF-8 With BOM. Click it. A popup opens. Click Save with encoding. You can now pick a new encoding for that file (UTF-8)

answered Jan 15, 2021 at 18:32

Fatema Hasta's user avatar

The error for me was that I read the SQL statement from a text file, and the text file was saved in the UTF-8 with BOM (byte order mark) format.

To solve this, I opened the file in Notepad++ and under Encoding, chose UTF-8. Alternatively you can remove the first three bytes of the file with a hex editor.

answered Sep 7, 2018 at 3:19

3

I was using ADO.NET and was using SQL Command as:

 string query =
"SELECT * " +
"FROM table_name" +
"Where id=@id";

the thing was i missed a whitespace at the end of "FROM table_name"+
So basically it said

string query = "SELECT * FROM table_nameWHERE id=@id";

and this was causing the error.

Hope it helps

answered Jun 7, 2019 at 3:39

IamButtman's user avatar

IamButtmanIamButtman

1972 silver badges15 bronze badges

I got this error because I pasted alias columns into a DECLARE statement.

DECLARE @userdata TABLE(
f.TABLE_CATALOG nvarchar(100),
f.TABLE_NAME nvarchar(100),
f.COLUMN_NAME nvarchar(100),
p.COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata 

ERROR:
Msg 102, Level 15, State 1, Line 2
Incorrect syntax near ‘.’.

DECLARE @userdata TABLE(
f_TABLE_CATALOG nvarchar(100),
f_TABLE_NAME nvarchar(100),
f_COLUMN_NAME nvarchar(100),
p_COLUMN_NAME nvarchar(100)
)
SELECT * FROM @userdata

NO ERROR

answered Jul 2, 2019 at 13:35

DanielT's user avatar

For me I was miss single quote in the statement

Incorrect One : "INSERT INTO Customers (CustomerNo, FirstName, MobileNo1, RelatedPersonMobileNo) VALUES ('John123', John', '1111111111', '1111111111)"

missed quote in John’ and ‘1111111111

Correct One: "INSERT INTO Customers (CustomerNo, FirstName, MobileNo1, RelatedPersonMobileNo) VALUES ('John123', 'John', '1111111111', '1111111111')"

answered Feb 23, 2022 at 13:37

abdella's user avatar

abdellaabdella

4505 silver badges10 bronze badges

I was able to run this by replacing the ‘Dot’; with and ‘Underscore’; for the [dbo][tablename].

EXAMPLE:
EXEC sp_columns INFORMATION_SCHEMA.COLUMNS
GO //**this will NOT work. But will intelliSence/autocomplete as if its correct.

EXEC sp_columns INFORMATION_SCHEMA_COLUMNS
GO //**This will run in Synapse. but funny enough will not autocomplete.

replace me with an underscore

enter image description here

using the dot, will autopoulate but after this go back and replace the dot with an underscore

answered Aug 15, 2022 at 19:16

user132992's user avatar

Incorrect syntax near is an error message in SQL Server because you’re using the wrong syntax for a SQL query or the query contains unprintable characters that are invincible to the naked eye.Copy of Incorrect Syntax Near in SQL Server

This article will show you SQL statements that will lead to the “incorrect syntax near” error, and we’ll show you solutions that you can use to solve similar errors in your environment.

Before you proceed, know that we’re aware of how frustrating this error can get, and that’s why this article will analyze the “incorrect syntax near ‘ ‘ meaning” as a way to make it easy for you.

With that out of the way, launch your SQL Server, and let’s teach you “how to fix incorrect syntax near ‘ ‘ in SQL Server.

Contents

  • Why Do Your SQL Statements Have an Incorrect Syntax?
    • – Typographical Error in Your SQL Statement
    • – Misusing a Keyword or Reserved Words
    • – SQL Statements Have Misplaced Punctuation Marks
    • – An Unprintable Characters in Your SQL Statement
  • How To Fix the Syntax Errors in Your SQL Statements?
    • – Check for Typographical Error in Your SQL Statement
    • – Avoid Using Reserved Words as Your Column Names
    • – Use Punctuation Marks the Right Way
    • – Use a Text Editor To Show the Unprintable Characters
  • Conclusion

Why Do Your SQL Statements Have an Incorrect Syntax?

Your SQL statements have an incorrect syntax because of the following:

  • You have a typographical error in your SQL statement
  • You’re misusing a keyword or reserved words
  • Your SQL statements have misplaced punctuation marks
  • You have unprintable characters in your SQL statement

– Typographical Error in Your SQL Statement

Typographical errors are a common cause of the “incorrect syntax near ‘-‘. SQL date” error in SQL Server. These errors occur when there is a mistake in the way that the SQL statement is written, such as a misspelled keyword or a missing punctuation mark.

For example, given the following SQL code that will create a “Customers” table:

CREATE TABLE Customers (

CustomerID INT PRIMARY KEY,

FirstName VARCHAR(50),

LastName VARCHAR(50),

Email VARCHAR(100),

Phone VARCHAR(20),

Address VARCHAR(200),

City VARCHAR(50),

State VARCHAR(50),

ZipCode VARCHAR(10)

);

INSERT INTO Customers (CustomerID, FirstName, LastName, Email, Phone, Address, City, State, ZipCode)

VALUES

(1, ‘John’, ‘Doe’, ‘johndoe@site.com’, ‘123-456-7890’, ‘123 Main St’, ‘New York’, ‘NY’, ‘10001’),

(2, ‘Jane’, ‘Doe’, ‘janedoe@site.com’, ‘123-456-7890’, ‘456 Elm St’, ‘Los Angeles’, ‘CA’, ‘90001’),

(3, ‘Bob’, ‘Smith’, ‘bobsmith@site.com’, ‘123-456-7890’, ‘789 Oak St’, ‘Chicago’, ‘IL’, ‘60601’),

(4, ‘Alice’, ‘Johnson’, ‘alicejohnson@site.com’, ‘123-456-7890’, ‘321 Pine St’, ‘Houston’, ‘TX’, ‘77001’);

The following SQL will result in a syntax error because there is a typographical error in the keyword “FORM” which should be “FROM”:

– Misusing a Keyword or Reserved Words

SQL Server has a list of reserved words that you cannot use as identifiers for tables, columns, or other objects. So, any attempt to use a reserved word as an identifier, can lead to the “incorrect syntax near ‘ ‘ in visual studio“.Copy of Fix the Syntax Errors in SQL Statements

For example, the following SQL statement will result in an error because “SELECT” and “TABLE” are reserved words that you cannot use as column names.

CREATE TABLE BIKE_TWO (

SELECT VARCHAR(15),

TABLE INT);

The following is another example, but this time, we typed the “FROM” keyword twice, and this will also cause an error.

SELECT FROM FROM Customers;

– SQL Statements Have Misplaced Punctuation Marks

A misplaced punctuation mark can cause the “incorrect syntax near ‘;’.” error in SQL Server, and this can happen when you’re trying to retrieve a record from a table.

For example, the following will result in a syntax error because the name that we’re retrieving contains quotes that cause the error. That’s because SQL will not understand how to parse the “SELECT” statement.

SELECT * FROM Customers WHERE Customers.FirstName = ‘O’Brien’

The same error will also occur in the following code and that’s because there we used a quote in the wrong way.

UPDATE Customers SET Lastname = ‘Doe’, ‘FirstName’ = ‘Jane’ WHERE CustomerID = 2;

– An Unprintable Characters in Your SQL Statement

In SQL Server, unprintable characters can cause the “incorrect syntax near ‘ ‘. in SQL Server 2019” error because they are mostly hidden, and they can alter the structure of an SQL statement. As a result, SQL Server cannot read and parse the statement correctly, so it returns a syntax error.

For example, in the following SQL, there is a Unicode character after the “e” in “Doe”, and it will cause the “incorrect syntax near” error. To confirm, copy the code, and run it against the “Customers” table that you created earlier.

SELECT * FROM Customers

WHERE LastName = ‘Doe’•

How To Fix the Syntax Errors in Your SQL Statements?

To fix the syntax errors in your SQL statements, you can:

  • Check for a typographical error in your SQL statement
  • Avoid using reserved words as your column names
  • Use punctuation marks the right way
  • Use a text editor to show the unprintable characters

– Check for Typographical Error in Your SQL Statement

Your first routine when you see the “incorrect syntax near” error is to check your SQL statements for typographical errors.

For example, the following code is a previous example that resulted in the error:

The next SQL is the correct version of the statement, and the fix is to change “FORM” to “FROM”. This will make it a valid SQL that the SQL server will parse without throwing a syntax error.

– Avoid Using Reserved Words as Your Column Names

Another way to prevent the incorrect syntax error in SQL Server is to avoid using reserved words as your column names. It’s recommended to use descriptive names that will make maintenance easy for you and other developers in the future.

However, if you need a reserved word as a column name, there is a way to do that.

For reference, the following is a previous example that’s trying to create the BIKE_TWO table in SQL Server:

CREATE TABLE BIKE_TWO (

SELECT VARCHAR(15),

TABLE INT);

The SQL code contains two reserved names; “SELECT” and “TABLE” that SQL Server will not allow. To fix this, you can place square brackets around them, and the code will run fine:

CREATE TABLE BIKE_TWO(

[SELECT] VARCHAR(15),

[TABLE] INT);

– Use Punctuation Marks the Right Way

Using punctuation the right way in SQL Server will prevent the “incorrect syntax near ‘.’. SQL Server stored procedure“. That’s because the server will understand your SQL queries and return a result (if applicable). For a start, have a look at the following SQL that we showed you earlier:

SELECT * FROM Customers WHERE Customers.FirstName = ‘O’Brien’

The customer’s first name has quotes that we used directly in the query, and this led to an error.Fixing of Incorrect Syntax Near

The fix is to use another punctuation mark before the “B” in Brien, and this will tell SQL Server that “O” and “Brien” are two separate words in quotes. This will allow it to parse the statement without throwing a syntax error.

SELECT * FROM Customers WHERE Customers.Name = ‘O”Brien’

Another example is the following SQL statement that we also showed you earlier, but we did not mention what caused the error. Observe the code for a second time, and you will see that we used quotes around a table name. This is wrong and that’s why the SQL Server shows a syntax error.

–This is wrong. 

UPDATE Customers SET Lastname = ‘Doe’, ‘FirstName’ = ‘Janee’ WHERE CustomerID = 2;

The solution is to remove the quotes from the “FirstName” column, and this cements the concept of using punctuation marks the right way.

— This is correct

UPDATE Customers SET Lastname = ‘Gonzalez’, FirstName = ‘Jonathan’ WHERE CustomerID = 2;

– Use a Text Editor To Show the Unprintable Characters

Using a text editor is the ultimate tool to solve the “incorrect syntax near ‘ ‘. in C#” error when your code has no syntax error and yet, SQL Server says otherwise.

If you’re in such a situation, do the following:

  1. Download Notepad++ from their official website and install it on your computer.
  2. Open Notepad++, and click on “New file”
  3. Ensure the value of the “Encoding” menu is “Encode in UTF-8”. If it’s not there, set it.
  4. Copy your SQL statements that are failing in SQL Server, and paste them in Notepad++.
  5. Click the “Encoding” menu again, and change it to “Encode in ANSI”.
  6. Check your text again, and you’ll see the “invincible character”.
  7. Delete it, and run your code in SQL Server again. It should work.

Meanwhile, if you can’t get Notepad++, you can paste the SQL in an online tool like “SQLiteonline”, and you’ll see the invincible characters immediately.

Conclusion

This article explained the causes of the “incorrect syntax near” error in SQL Server, and five methods that can fix it for you, depending on your use case. From everything that we’ve talked about, and what you’ve learned so far, remember the following:

  • Typographical errors and misuse of reserved keywords are the two major causes of the “incorrect syntax near” error in SQL Server.
  • Misplaced punctuation marks and unprintable characters can also cause a syntax error in SQL Server.
  • The top solution for the “incorrect syntax near” in SQL Server is to check for typographical errors, and use punctuation marks the right way.
  • If all solutions fail to solve the incorrect syntax in your SQL statements, paste the SQL in Notepad++, and enable “Encoding in ANSI”.

Right now, the incorrect syntax should be resolved in your SQL code. Take care of yourself, and always run correct and valid SQL statements on your SQL server.

  • Author
  • Recent Posts

Position is Everything

Your Go-To Resource for Learn & Build: CSS,JavaScript,HTML,PHP,C++ and MYSQL. Meet The Team

Position is Everything

Hi friends, in this post, we will be discussing about how you can resolve the SQL Server CTE Error: Incorrect syntax near ‘)’.

What are Common Table Expressions (CTEs)?

In SQL Server and more specifically in T-SQL, a CTE is a temporary named result set, from which you can then select records. CTEs are temporary objects and are not stored on disk.

CTEs vs Views

Even though CTEs might sound similar to database views, there is one major difference: views are database objects that are stored physically on disk but CTEs, as mentioned above, are just temporary objects and thus they are not stored on disk.

Let’s Reproduce the Incorrect syntax near ‘)’ error

Now, about the Incorrect syntax near ‘)’ error, let’s see a relevant example, via which we can reproduce the error.

With the below T-SQL script, I’m trying to define a CTE in SQL Server:

WITH cte_Customers
AS (
   SELECT *
   FROM dbo.tblCustomers
   WHERE id>2
   )

However, when I try to execute the above script, I will get the error message:

Msg 102, Level 15, State 1, Line 6
Incorrect syntax near ‘)’.

How to Resolve the Issue

Resolving the above issue, is very easy.

The key thing to remember when defining a CTE in SQL Server, is that in its definition, you must always include a SELECT, DELETE, INSERT or UPDATE statement, that references one or more columns returned by the CTE.

So, by continuing our example, in order to make the definition of the CTE valid, I can include for instance, a SELECT statement.

Let’s see the new example:

WITH cte_Customers
AS (
   SELECT *
   FROM dbo.tblCustomers
   WHERE id>2
   )
SELECT * FROM cte_Customers

Now, if I execute the above script, I can see that my CTE works without errors.

Learn more about SQL Server Development – Enroll to our Course!

Enroll to our online course titled “Essential SQL Server Development Tips for SQL Developers(special limited-time discount included in link) and sharpen your SQL Server database programming skills via a large set of tips on T-SQL and database development techniques. The course, among other, features over than 30 live demonstrations!

Essential SQL Server Development Tips for SQL Developers - Online Course

(Lifetime Access/ Live Demos / Downloadable Resources and more!)

Enroll from $12.99

Featured Online Courses:

  • SQL Server 2022: What’s New – New and Enhanced Features
  • Working with Python on Windows and SQL Server Databases
  • Introduction to Azure Database for MySQL
  • Boost SQL Server Database Performance with In-Memory OLTP
  • Introduction to Azure SQL Database for Beginners
  • Essential SQL Server Administration Tips
  • SQL Server Fundamentals – SQL Database for Beginners
  • Essential SQL Server Development Tips for SQL Developers
  • Introduction to Computer Programming for Beginners
  • .NET Programming for Beginners – Windows Forms with C#
  • SQL Server 2019: What’s New – New and Enhanced Features
  • Entity Framework: Getting Started – Complete Beginners Guide
  • Data Management for Beginners – Main Principles
  • A Guide on How to Start and Monetize a Successful Blog

Read Also:

  • Essential SQL Server Development Tips for SQL Developers (Course Preview)
  • System.IO.FileLoadException: could not load file or assembly…
  • The TempDB System Database in SQL Server
  • SQL Server Installation and Setup Best Practices
  • The feature you are trying to use is on a network resource that is unavailable
  • SQL Server 2016: TempDB Enhancements
  • tempdb growth
  • Introduction to SQL Server Machine Learning Services
  • Essential SQL Server Administration Tips
  • What are SQL Server Statistics and Where are they Stored?
  • Tip of the Week No.1 – SQL Server Always Encrypted
  • Tip of the Week No.3 – TempDB Settings During Installation
  • Tip of the Week No.6 – About SQL Server Temporary Tables
  • Tip of the Week No.19 – What is the Database First Workflow in Entity Framework?
  • Tip of the Week No.20 – SQL Server Surface Area
  • Within Which Context Does SQL Server Access Network Resources?
  • Troubleshooting the File Activation Error in SQL Server
  • SQL Server Error 262: CREATE DATABASE permission denied in database – How to Resolve
  • Check all our Weekly Tips!

Subscribe to our newsletter and stay up to date!

Subscribe to our YouTube channel (SQLNetHub TV)

Easily generate snippets with Snippets Generator!

Secure your databases using DBA Security Advisor!

Generate dynamic T-SQL scripts with Dynamic SQL Generator!

Check our latest software releases!

Check our eBooks!

Rate this article: 1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)

Loading…

Reference: SQLNetHub.com (https://www.sqlnethub.com)

© SQLNetHub

Artemakis Artemiou

Artemakis Artemiou is a Senior SQL Server Architect, Author, a 9 Times Microsoft Data Platform MVP (2009-2018). He has over 20 years of experience in the IT industry in various roles. Artemakis is the founder of SQLNetHub and {essentialDevTips.com}. Artemakis is the creator of the well-known software tools Snippets Generator and DBA Security Advisor. Also, he is the author of many eBooks on SQL Server. Artemakis currently serves as the President of the Cyprus .NET User Group (CDNUG) and the International .NET Association Country Leader for Cyprus (INETA). Moreover, Artemakis teaches on Udemy, you can check his courses here.

Views: 4,605

  • Remove From My Forums
  • Question

  • Can someone please tell me what normally causes this error message?  I can’t even tell what line or what page is producing the error. 

    I’m trying to update information in SQL via an ASP.NET control — in my SET command I’m not currently including all columns in the statement (just testing to see if one column updates correctly first); could that be causing this
    error, or is it something else?

    Thanks,

    Matt 

    Description:
    An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Data.SqlClient.SqlException: Incorrect syntax near ‘,’.

    Source Error:

    Server Error in ‘/www.mywebsite.com’ Application.


    Incorrect syntax near ‘,’.

    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

    Stack Trace:

    [SqlException (0x80131904): Incorrect syntax near ','.]
    
     System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +2032870
    
     System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5037992
    
     System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
    
     System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
    
     System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +215
    
     System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +987
    
     System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
    
     System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) +178
    
     System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +137
    
     System.Web.UI.WebControls.SqlDataSourceView.ExecuteDbCommand(DbCommand command, DataSourceOperation operation) +394
    
     System.Web.UI.WebControls.SqlDataSourceView.ExecuteUpdate(IDictionary keys, IDictionary values, IDictionary oldValues) +697
    
     System.Web.UI.DataSourceView.Update(IDictionary keys, IDictionary values, IDictionary oldValues, DataSourceViewOperationCallback callback) +95
    
     System.Web.UI.WebControls.FormView.HandleUpdate(String commandArg, Boolean causesValidation) +1154
    
     System.Web.UI.WebControls.FormView.HandleEvent(EventArgs e, Boolean causesValidation, String validationGroup) +408
    
     System.Web.UI.WebControls.FormView.OnBubbleEvent(Object source, EventArgs e) +95
    
     System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
    
     System.Web.UI.WebControls.FormViewRow.OnBubbleEvent(Object source, EventArgs e) +112
    
     System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
    
     System.Web.UI.WebControls.LinkButton.OnCommand(CommandEventArgs e) +118
    
     System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String eventArgument) +169
    
     System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +9
    
     System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
    
     System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +176
    
     System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
    
    


    Version Information: Microsoft .NET Framework Version:4.0.21006; ASP.NET Version:4.0.21006.1

Answers

  • With help from MS tech support, I was able to resolve the issue by revising the BindFormView method (the Update code per all the comments here was fine—problem was rooted in the very last line where the BindFormView code is called)…In case it helps someone
    else, here is the BindFormView code that enabled me to successfully use FormView to display and update images in MS SQL:

    Private Sub BindFormView()
        
    ' Get the connection string from Web.config. 
    Using conn As New SqlConnection(ConfigurationManager.ConnectionStrings("MyDatabaseConnectionString").ToString())
    
    ' Create a DataSet object.
          Dim dsPerson As New DataSet()
    
     ' Create a SELECT query.
     Dim strSelectCmd As String = "SELECT UserId,UserName,Age FROM Advertisements Where UserId=@UserId"
    
     ' Create a SqlDataAdapter object
    Dim da As New SqlDataAdapter()
    
          Dim selectCMD As SqlCommand = New SqlCommand(strSelectCmd, conn)
          da.SelectCommand = selectCMD
    
          selectCMD.Parameters.Add("@UserId", SqlDbType.UniqueIdentifier)
    
          Dim currentUser As MembershipUser = Membership.GetUser()
    
          If currentUser IsNot Nothing Then
    
    ' Determine the currently logged on user's UserId value
            Dim currentUserId As Guid = CType(currentUser.ProviderUserKey, Guid)
    
     ' Assign the currently logged on user's UserId to the @UserId parameter
    selectCMD.Parameters("@UserId").Value = currentUserId
          Else
            selectCMD.Parameters("@UserId").Value = Guid.Empty
          End If
          ' Open the connection
          conn.Open()
    
    ' Fill the DataTable named "Advertisements" in DataSet with the rows
    ' returned by the query.
    
    Dim dsAdvertisements As DataSet = New DataSet()
    
    da.Fill(dsAdvertisements, "Advertisements")
    
    ' Bind the FormView control.
          AdvertisementForm.DataSource = dsAdvertisements
          AdvertisementForm.DataBind()
    
        End Using
      End Sub
    • Marked as answer by

      Monday, July 5, 2010 11:26 PM

I’m trying to execute the following stored procedure:

CREATE PROCEDURE  dbo.Compress_taille(@nom_table VARCHAR(64))                                            
AS                       
    PRINT @nom_table                                  
    declare @results table                 
    (                                                        
    TableName varchar(250),                           
    ColumnName varchar(250),                       
    DataType varchar(250),                               
    MaxLength varchar(250),                            
    Longest varchar(250),                   
    SQLText varchar(250),                  
    position float                    
    )                                   
    INSERT INTO @results(TableName,ColumnName,DataType,MaxLength,Longest,SQLText,position)                      
    SELECT                 
        Object_Name(c.object_id) as TableName,        
        c.name as ColumnName,            
        t.Name as DataType,     
        case       
        when t.Name not like  '%char%' Then 'NA'
        when c.max_length = -1 then 'Max' 
        else CAST(c.max_length as varchar)
        end as MaxLength,        
        'NA' as Longest,          
        'SELECT Max(Len([' + c.name + '])) FROM ' + OBJECT_SCHEMA_NAME(c.object_id) + '.' + Object_Name(c.object_id) as SQLText,               
        column_id as position   
    FROM                                  
        sys.columns c    
    INNER JOIN                       
        sys.types t ON c.system_type_id = t.system_type_id  
    WHERE                 
        c.object_id = OBJECT_ID(@nom_table)               
        and    t.Name <> 'sysname'   
    order by column_id                       


    DECLARE @position varchar(36)                            
    DECLARE @sql varchar(200)                       
    declare @receiver table(theCount int)                 


    DECLARE cursor_script CURSOR                      
        FOR SELECT position, SQLText FROM @results WHERE MaxLength != 'NA'          
    OPEN cursor_script                        
    FETCH NEXT FROM cursor_script                             
    INTO @position, @sql                  
    WHILE @@FETCH_STATUS = 0                  
    BEGIN                  
        INSERT INTO @receiver (theCount)       
        exec(@sql)        

        UPDATE @results           
        SET Longest = (SELECT theCount FROM @receiver)        
        WHERE position = @position     

        DELETE FROM @receiver             

        FETCH NEXT FROM cursor_script             
        INTO @position, @sql   
    END                       
    CLOSE cursor_script                       
    DEALLOCATE cursor_script                         


    DECLARE @script_sql varchar(max)             


    set @script_sql=' create table [AQR_INF_2017T2].[dbo].'+ left(@nom_table, LEN(@nom_table)-LEN('39CR_201703')) +'39CR_201706('  

    DECLARE                             
            @TableName VARCHAR(80),
            @ColumnName VARCHAR(80),
            @DataType VARCHAR(80),
            @MaxLength VARCHAR(80),
            @Longest VARCHAR(80),
            @code_colonne VARCHAR(1000)


    DECLARE getemp_curs CURSOR                              
    FOR                  
        SELECT TableName, ColumnName, DataType,MaxLength,        
        coalesce(case when Longest='0' then '10' else Longest end ,'1') as Longest,
        position,             
        coalesce(
        case when DataType like '%numer%' then '[' + ColumnName + '] float,'
        when DataType like '%char%' then '[' + ColumnName + '] char(' + coalesce(case when Longest='0' then '10' else Longest end ,'1') + '), ' 
        else '[' +ColumnName + '] ' + DataType+ ',' end,'[' +ColumnName + '] nvarchar(1),')    
        AS code_colonne FROM @results order by position                                           


        OPEN getemp_curs      
        FETCH NEXT FROM getemp_curs into @TableName, @ColumnName, @DataType,@MaxLength,@Longest,@position,@code_colonne          
        WHILE @@FETCH_STATUS = 0 BEGIN   

        set  @script_sql=@script_sql + @code_colonne                                               
        FETCH NEXT FROM getemp_curs into @TableName, @ColumnName, @DataType,@MaxLength,@Longest,@position,@code_colonne          
        END      
    CLOSE getemp_curs                      
    DEALLOCATE getemp_curs                        

    set  @script_sql= case when  left(@script_sql,1)=',' then   left(@script_sql, LEN(@script_sql) -1) else @script_sql end  + ') '                             


    PRINT '@script_sql: ' + @script_sql                                      
    exec @script_sql

GO                         

But I when I execute this code:

DECLARE @table varchar(255)        

DECLARE cursor_test CURSOR                               
    FOR SELECT name FROM sysobjects WHERE type='U' and substring(name,1,3) not in ('T_P','T_Z','T_R','TEST_AQR')  order by name    -- SUPPRIME LES TABLES NON UTILES POUR L'INFOCENTRE AQR  
OPEN cursor_test                       
FETCH NEXT FROM cursor_test                            
INTO @table              
WHILE @@FETCH_STATUS = 0               
BEGIN
    EXEC AQR_INF_2017T2.dbo.Compress_taille @table
    FETCH NEXT FROM cursor_test          
    INTO @table    
END                       
CLOSE cursor_test                   
DEALLOCATE cursor_test

I get this error message:

Msg 102, Level 15, State 1, Line 1
Incorrect syntax near ‘)’.

This code was working for one year and now it doesn’t. Our version control does not seem to help either, and, unfortunately, the logic does not seem straightforward to me.

One thought was about the version of SQL Server causing breaking changes, but I am not convinced.

How would I go about troubleshooting this issue? Are there any good industry practices for tracking down script issues when dynamic sql is involved?

I need to verify where the breaking code starts, not necessarily where the syntax error occurs.

Возможно, вам также будет интересно:

  • Incomplete session by time out ошибка принтера samsung
  • Importrange google таблицы внутренняя ошибка при импорте диапазона
  • Incompatible types delphi ошибка
  • Importhtml ошибка загрузка данных
  • Incoming packet was garbled on decryption ошибка

  • Понравилась статья? Поделить с друзьями:
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии