You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to get some query working which includes binding value multiple times:
eg.
.OrderByRaw("CASE WHEN StartDate < ? and (EndDate is null or EndDate > ?) THEN 0 WHEN StartDate > ? THEN 1 ELSE 2 END",bindings:newobject[]{DateTime.Today,DateTime.Today,DateTime.Today})
Is there any way to modify query in a way, so the DateTime.Today declared only ones.
varquery=newQuery("Users").Define("Today",DateTime.Today).OrderByRaw("CASE WHEN StartDate < ? and (EndDate is null or EndDate > ?) THEN 0 WHEN StartDate > ? THEN 1 ELSE 2 END",bindings:newobject[]{Variable("Today"),Variable("Today"),Variable("Today")})
It doesn't make sense to me.
Would be nice to have named parameters, so I can use them in raw queries like this:
varquery=newQuery("Users").Define("Today",DateTime.Today).WhereRaw("DATEPART('weekday', @Today) = 3").OrderByRaw("CASE WHEN StartDate < @Today and (EndDate is null or EndDate > @Today) THEN 0 WHEN StartDate > @Today THEN 1 ELSE 2 END")
Sorry for bringing this up two years later, but having the same issue and after consideration also think it doesn't make sense. The expectation of a variable is that it would be named in the query, and importantly also only needed to be bound once. This is relevant in, for example, cursor based pagination where one would do something like this
SELECT*FROM Users
WHERE
(LastName >'Smith')
OR (LastName ='Smith'AND FirstName <'John')
OR (LastName ='Smith'AND FirstName ='John'AND Id >42)
ORDER BY
LastName ASC,
FirstName DESC,
Id ASC
OFFSET 0 ROWS FETCH NEXT 25 ROWS ONLY;
where the current solution would require the parameters:
smith, smith, john,smith,john,42
while with named variables we would just have
smith, john, 42
which perhaps don't make that much of a practical difference, but I do think the latter is the expected implementation. Or maybe I am just missing something ;)
Activity
ahmad-moussawi commentedon Apr 7, 2023
There is a hidden feature that allows you to define a variable and use it multiple times.
Check the example here.
This is not publicly documented since it may be changed or removed later, so consider this if you decide to use it.
fairking commentedon Apr 13, 2023
Thanks for the answer. Would it be correct?
It doesn't make sense to me.
Would be nice to have named parameters, so I can use them in raw queries like this:
michelbieleveld commentedon Apr 8, 2025
Sorry for bringing this up two years later, but having the same issue and after consideration also think it doesn't make sense. The expectation of a variable is that it would be named in the query, and importantly also only needed to be bound once. This is relevant in, for example, cursor based pagination where one would do something like this
where the current solution would require the parameters:
while with named variables we would just have
which perhaps don't make that much of a practical difference, but I do think the latter is the expected implementation. Or maybe I am just missing something ;)
areevesat commentedon Jan 8, 2026
I would definitely like to see something like this. Ideally, I could write SqlKata code like
And have this converted into an appropriate query. Right now, with just the question marks, I have to pass the same parameter to the method twice.