/ / Nesprávna syntax pre SELECT TOP s parametrom - asp.net, sql, vb.net, sql-server-2005, sqlparameters

Nesprávna syntax pre SELECT TOP s parametrom - asp.net, sql, vb.net, sql-server-2005, sqlparameters

Kedysi som mal toto

Dt = MyMod.GetDataTable("SELECT TOP " & QuestionsPerCats(i) & " * From Questions WHERE CategoriesID ="" & Cats(i) & "" ORDER BY NEWID()")

ale teraz som sa rozhodol použiť sqlparameters ako

Dim cmd As New SqlCommand("SELECT TOP @QuestionsPerCats * From Questions WHERE CategoriesID = @CategoriesID ORDER BY NEWID()", conn)
Dim sqlParam As SqlParameter = Nothing
sqlParam = cmd.Parameters.Add("@QuestionsPerCats", SqlDbType.SmallInt)
sqlParam.Value = QuestionsPerCats(i)
sqlParam = cmd.Parameters.Add("@CategoriesID", SqlDbType.SmallInt)
sqlParam.Value = Cats(i)

čo sa, žiaľ, páči

SELECT TOP @QuestionsPerCats * From Questions WHERE CategoriesID = @CategoriesID ORDER BY NEWID()

a vráti nasledujúcu chybu

Incorrect syntax near "@QuestionsPerCats".

Čo tu robím zle?

odpovede:

10 pre odpoveď č. 1

skúste:

SELECT TOP (@QuestionsPerCats) *
FROM Questions
WHERE CategoriesID = @CategoriesID
ORDER BY NEWID()

(SQL Server 2005 a novší)


0 pre odpoveď č. 2

Skúste to zmeniť:

cmd.Parameters.Add("@QuestionsPerCats", SqlDbType.SmallInt)
cmd.Parameters("@QuestionsPerCats").Value = QuestionsPerCats(i)


cmd.Parameters.Add("@CategoriesID", SqlDbType.SmallInt)
cmd.Parameters("@CategoriesID").Value = Cats(i)

Metóda, ktorú používate na pridanie parametrov do príkazu, je trochu divná. Mám podozrenie, že to môže byť príčinou vašej chyby.


0 pre odpoveď č. 3

Zahrňte @QuestionsPerCats do (), ako je definované v toto odkaz

SELECT TOP (@QuestionsPerCats) *
From Questions
WHERE CategoriesID = @CategoriesID ORDER BY NEWID()