Вступление: я надеюсь, что для этого существует библиотека или рутина, но я не смог найти ничего подобного. Я действительно ищу направление и советы о том, с чего начать ...Разделите несколько операторов SQL на отдельные операторы SQL
Вот как именно: У меня есть блок команд SQL, идущий как обычный текст. Это могут быть команды SQL или несколько. Мне нужен способ разбить несколько SQL-команд, чтобы я мог запускать их по одному. Microsoft SQL Management Studio делает это поведение из коробки.
Я пытаюсь добавить эту функциональность в приложение PHP5/MySQL5, запущенное на Apache (Debian).
Некоторые важные моменты:
- мне действительно нужно запускать их по одному за раз. Шутки в сторону.
- Я не хочу, чтобы пользователь вводил запятую после каждого оператора SQL.
- Операторы SQL могут быть на одной или нескольких строках, поэтому я не могу обернуть LBs/CRs
- Он должен поддерживать как минимум SELECT, UPDATE, INSERT, DELETE.
- Он должен поддерживать запросы, суб-выбирает
- Neatly закладками SQL должен работать
- (В интересах используемого программного обеспечения) Я не хочу, чтобы заставить пользователя ввести в любом виде разделителей.
Вот пример блок SQL мне нужно разделить на два заявления:
select sMessage,
(
SELECT COUNT(sTag) FROM Tags WHERE ixTicket = note.ixTicket
) FROM note
select * from ticket
WHERE (SELECT MAX(nCount) FROM Counter WHERE ixTicket = ticket.ixTicket) > 5
я попробовал некоторые RegEx попытки, но это, кажется, не быть достаточно мощным.
Любая рекомендация по подходу к решению этой проблемы?
Пункт 7 действительно делает этот медведь ... даже Oracle и SQL Server требуют определенного типа разделителем между операторами (;, GO, \, и т.д.). Это ПРЕПЯТСТВУЕТ Трудно с разделителем (например, просто подумайте обо всех местах, куда может идти SELECT, плюс у вас есть UNION и подобные заявления, чтобы конкурировать с –
BTW. Студия SQL Server Management требует «GO» или «;» между несколькими заявления ... просто не для 1. Вы просите простой способ сделать что-то настолько трудное, что даже MS и Oracle не предоставляют его. –
@LuckLindy: «Студия управления SQL Server требует« GO »или« GO », «между несколькими утверждениями ... просто не для 1.« Это на самом деле неправильно. Просто FYI. Откройте SQL Studio и проверьте его. – Justin