2.1 KiB
2.1 KiB
Strata.SqlTools.Snowflake
Snowflake SQL specific implementations for the Strata.SqlTools library.
Features
- QueryBreakdown: Parse and generate Snowflake SQL SELECT queries
- DeleteBreakdown: Parse and generate DELETE statements
- InsertBreakdown: Parse and generate INSERT statements
- UpdateBreakdown: Parse and generate UPDATE statements
- ProcedureBreakdown: Parse and generate stored procedure CALL statements
- Statement Parsing: Token-based Snowflake SQL parsing
- Command Visitor: Snowflake-specific SQL generation
- Parameter Support: Both
:parameterand@parametersyntax
Installation
dotnet add package Strata.SqlTools.Snowflake
Usage
using Strata.SqlTools.Breakdowns.Snowflake;
// Parse a Snowflake SQL query (supports both @ and : parameters)
var query = QueryBreakdown.Parse(@"
SELECT customer_id, customer_name
FROM customers
WHERE region = :region
");
// Parameters are automatically extracted during parsing
Assert.That(query.Parameters, Does.ContainKey(":region"));
// Modify and regenerate - parameters are automatically extracted
query.AddWhereClause("is_active = true", "and");
query.AddWhereClause("created_date > :start_date", "and", false); // false = Snowflake parsing
// The :start_date parameter is now in the Parameters dictionary
query.SetParameterValue(":start_date", "2024-01-01");
query.SetParameterValue(":region", "WEST");
string sql = query.GetSql();
Automatic Parameter Extraction
The AddWhereClause method automatically extracts both :parameter (Snowflake) and @parameter (T-SQL) references:
- Parameters are created with
nullvalues initially - Use
SetParameterValueto assign actual values - Supports both
:paramand@paramsyntax based on theisMicrosoftSqlflag - Existing parameter values are preserved when adding additional WHERE clauses
- Type mismatches throw
InvalidOperationExceptionfor safety
Dependencies
- Strata.SqlTools.SqlServer (inherits SQL Server functionality)
- Strata.SqlTools (core library)
License
MIT License - see LICENSE.txt for details