Я ищу метод ANSI-SQL для выполнения запроса Select без возврата какой-либо записи, но для заполнения структуры полей TDataSet.
Метод, который я нашел, заключается в добавлении «где 1 = 0» в любой запрос, например:
Select Id, name, province
from customers
where 1=0
Это довольно тривиальный пример, он становится немного сложнее, когда мне приходится работать с запросами, введенными пользователем, затем анализировать их, удалять предложение where, если оно уже есть, и заменять на «1 = 0». .
Если последнее предложение в запросе, введенном пользователем, является предложением where, тогда нет никаких проблем, но как насчет более сложных запросов, таких как:
select
c.lastname,
sum(cs.amount)
from customersales cs
join customers c on c.idcustomer=cs.idcustomer
/* where 1=0 */
group by c.idcustomer, c.lastname
Используя метод "where 1 = 0", единственный способ вставить его в предыдущем примере - использовать довольно мощный анализатор SQL (помните, что пользователь может вводить сложные запросы, включая подзапросы и все такое), кто можно понять, где включить эту строку.
Кто-нибудь знает лучший способ сделать это? Я не могу использовать «предел 1», потому что он должен соответствовать ANSI.