Passando parâmetros dentro de SQLs do DB2 a partir de um script de shell unix

1

Eu quero excluir certas linhas de uma tabela com base nos meus valores de entrada para um script de shell unix. Estou fazendo conexões e finalizando-o dentro do meu script de shell.

Se você perceber agora, o campo é codificado na cláusula where.

Como posso passar esse valor como um parâmetro para o script?

#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 ""CONNECT TO DBNAME user USER using passwd""
db2 ""delete from table where field =\'abcdefghijklmn\'""
db2 ""CONNECT RESET"" 
    
por novice unix db2 25.01.2018 / 00:26

1 resposta

1

Referenciando esta resposta de outra comunidade ...

The DB2 CLP does not support using parameter markers.

However, when you are running db2 non-interactively (i.e., from the shell), you can substitute shell variables:

Isso deve deixar você com algo como:

#!/bin/ksh
set -x
export DB2INSTANCE=db2clnt1
db2 "CONNECT TO DBNAME user USER using passwd"
db2 "delete from table where field = '${1}'"
db2 "CONNECT RESET"

que pode ser chamado com o valor do campo na linha de comando

./myksh.sh "delete-this-field"

É importante lembrar que ...

...this is just using shell substitution you'll need to handle adding single quotes around your strings...[and] if your strings have single quotes this becomes more complicated.

    
por 25.01.2018 / 00:43