
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
70 lines
1.6 KiB
Plaintext
70 lines
1.6 KiB
Plaintext
== Why is this an issue?
|
|
|
|
A ``++FETCH++`` statement fails when the number of variables does not match the number of columns selected in the CURSOR definition.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,sql]
|
|
----
|
|
DECLARE c1 cursor FOR SELECT FirstName, LastName FROM customer;
|
|
OPEN c1;
|
|
FETCH NEXT FROM c1 INTO @Name; -- Noncompliant
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,sql]
|
|
----
|
|
DECLARE c1 cursor FOR SELECT FirstName, LastName FROM customer;
|
|
OPEN c1;
|
|
FETCH NEXT FROM c1 INTO @FirstName, @LastName;
|
|
----
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Refactor this ``++FETCH++`` to select the same number of columns selected in "xxx".
|
|
|
|
|
|
=== Highlighting
|
|
|
|
* primary: ``++INTO++`` + column list in ``++FETCH++`` statement
|
|
* secondary: ``++SELECT++`` + column list in cursor
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== is related to: S3613
|
|
|
|
=== is related to: S3614
|
|
|
|
=== on 20 Jul 2017, 15:26:19 Pierre-Yves Nicolas wrote:
|
|
According to the Microsoft https://docs.microsoft.com/en-us/sql/t-sql/language-elements/fetch-transact-sql[reference for FETCH]:
|
|
|
|
____
|
|
The number of variables must match the number of columns in the cursor select list.
|
|
____
|
|
|
|
|
|
The code can be compiled with no issue, for example in a stored procedure. The following error is raised at runtime:
|
|
|
|
----
|
|
Msg 16924, Level 16, State 1, Line 61
|
|
Cursorfetch: The number of variables declared in the INTO list must match that of selected columns.
|
|
----
|
|
|
|
=== on 7 Aug 2017, 15:03:24 Pierre-Yves Nicolas wrote:
|
|
\[~massimo.paladin] Why minor? Such code triggers a failure at execution time.
|
|
|
|
endif::env-github,rspecator-view[]
|