database-hana
Installation
SKILL.md
SAP HANA Database Standards
Priority: P0 (CRITICAL)
Rules
- Strict Parameterization: Always use
?parameter placeholders for SAP HANA queries. Never use raw string concatenation,fmt.Sprintf, or untrusted interpolation for values. - Batching & Chunking Limits: Chunk large
IN (...)parameter lists into batches of at most 1,000 items to avoid HANA driver and engine parameter limits. - Explicit Column Aliasing: Always explicitly alias columns in multi-table queries (e.g.
m.code AS code,m.name AS name). SAP HANA and Go database drivers map scan columns by name; duplicate column names across joins silently collide or overwrite values. Never useSELECT *. - HANA Datatype Casting Gotchas: SAP HANA functions (such as
COALESCE,SUBSTR,CONCAT) require strictly compatible parameter types. Explicitly cast values when comparing or falling back (e.g.COALESCE(col, 'default'),TO_VARCHAR(...),CAST(? AS NVARCHAR)). - Identifier Case-Sensitivity: Unquoted SQL identifiers in SAP HANA default to UPPERCASE. Quoted identifiers (
"columnName") preserve case. Keep identifiers consistent with schema conventions. - Keyset & Streaming Pagination: Avoid deep
LIMIT/OFFSETon large columnar tables. Prefer keyset/seek pagination (WHERE id > ? ORDER BY id ASC LIMIT ?) and stream large result sets usingrows.Next()directly into models to prevent memory spikes. - Transaction Scope: Keep transactions short and focused on atomic write operations. Never perform slow external I/O or unbounded operations inside an open transaction. Always pair with
defer tx.Rollback().