2012-12-20 7 views
6

Mam plik .sql z definicjami procedur składowanych.Jak analizować podpis procedury składowanej w języku C# ze zwykłego tekstu

Potrzebuję napisać mały program w języku C#, który odczytuje plik i uzyskuje listę z podpisami procedur przechowywanych.

Na przykład, lista ta powinna wyglądać następująco:

[dbo].[procedureOne] (int, int, varchar(250) out, nvarchar) 
[dbo].[procedureTwo] (int, varchar(255)) 
[dbo].[procedureThree] () 
[dbo].[amazingSP] (datetime, datetime) 

Czy istnieje sposób to zrobić przy użyciu regex?

Jakie jest najlepsze podejście?

+0

jaka jest struktura danych wejściowych? – Woot4Moo

+0

wejście to plik .sql z definicjami procedur przechowywanych, takimi jak "CREATE PROCEDURE [dbo]. [AmazingSP] param1 int, param2 datetime ... etc" – Herno

+0

Tak więc plik nie zawiera żadnych dodatkowych informacji, takich jak treść schematu, tylko prosty CREATE PROC ... – Woot4Moo

Odpowiedz

0

W końcu zaimplementowałem ręcznie parser sygnatur w języku C#. Zajęło mi to kilka dni, aby go wypolerować, ponieważ zawsze zdarzały się przypadki, które zepsuły parser, powodując nieoczekiwane rezultaty. To było zabawne kodowanie tak. Załaduję kod, gdy go skończę, jeśli ktoś go potrzebuje.

1

Może mógłbyś to zrobić z Regeksem, ale myślę, że napisanie parsera byłoby w tym przypadku łatwiejsze.

Jeśli chcesz, możesz wypróbować Irony, który jest bardzo prosty w użyciu.