Skip to main content
9 events
when toggle format what by license comment
May 13 at 13:55 comment added Mark To address the various comments: @KamilMaciorowski @ikkachu This is the output from printf / set -x: sqlcmd -S localhost -U sa -P password -v PrintMe=abc== -i test.sql. Clearly the quotes are removed but I'm not sure what the right combination of quotes is supposed to be. I've tried several variations. If we think it's a sqlcmd parsing problem, I can try raising an issue in that repo as I already searched and saw nothing about this. @Kusalananda, I suspect this issues lives in the shell / sqlcmd layer since my example using :setvar works fine.
May 13 at 7:31 history edited Stéphane Chazelas CC BY-SA 4.0
Make it clear that we're talking about some Microsoft specific utility access a Microsoft SQL server implementation using some Microsoft-specific SQL language as that's likely relevant.
May 13 at 7:22 comment added ilkkachu that zsh = expansion is a fine guess, but it should only make a difference if the equals sign is at the start of a word. Like echo =foo gives an error. echo foo=bar= as here should be fine. (the linked Q&A says that too in the quote from the manual.) And, if it hits the expansion in some random case, you'll get a path like /usr/local/bin/foo, or an error if that command isn't found.
May 13 at 6:59 comment added ilkkachu Alternatively to printf, enable set -x and run the program normally. The shell will print what it actually executed.
May 13 at 6:17 history edited Kusalananda
edited tags
May 13 at 3:45 comment added Kusalananda This likely has nothing to do with the shell but rather with how the database engine treats values containing equal signs. Try using ^ to escape the equal signs, or use embedded single quotes to quote the value of the SQL variable. Unfortunately, I don't have access to this particular database engine locally.
May 13 at 2:05 comment added Kamil Maciorowski Try printf '%s\n' -S localhost -U sa -P password -v PrintMe='abc==' -i test.sql and see if your shell passes the == as == (I bet it does). Note PrintMe='abc==' after quote removal is PrintMe=abc==. I would rather suspect some quirk (bug?) in parsing this by sqlcmd. AFAIK it is supposed to support -v var1=v,var2=v2, so parsing the option-argument is not as trivial as detecting the first = only.
S May 13 at 1:13 review First questions
May 13 at 9:38
S May 13 at 1:13 history asked Mark CC BY-SA 4.0