sibert
sibert

Reputation: 2228

Long queries in golang

This is a question based on absolute no knowledge of golang and the aim is to find if there is a way to make long queries readable.

My attempt is to put the sql text in a variable and then execute the variable.

Pseudocode (no real code):

var query = 
SELECT * FROM foo
UNION ALL
SELECT * FROM bar
UNION ALL
SELECT * FROM other
...

db.prepare (var query)
db.query (var query)

This is maybe a dumb question, but I have searched and found no clue how to make long queries more "readable" in go. Most examples are based on "hello world" level. In the real world queries can be quite long.

TIA,

Upvotes: 14

Views: 15965

Answers (2)

Keyur Lakhani
Keyur Lakhani

Reputation: 4371

There are two methods for this

1. Using backquote: Use (backquote\backtick) which is with symbol ` in keyboard. So that your query will look like

query := `INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
          VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');`

2. Using string concatenation: Use string concatenation characters between lines So that your query will look like

query :="INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)"+
        "VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');"

I prefer the 1st one :)

Upvotes: 1

Aruna Herath
Aruna Herath

Reputation: 6531

You can declare the query as a multiline string literal.

query := `
  SELECT * FROM foo
  UNION ALL
  SELECT * FROM bar
  UNION ALL
  SELECT * FROM other`

And use it with DB.Query.

rows, err := db.Query(query)

There are many different drivers for many different sql databases you can use. They all would give you a DB object to work with. So you can use DB.Prepare, DB.Query appropriately. Check docs of database/sql package for more info.

Upvotes: 31

Related Questions