- вам нужно сделать оператор
return
в теле функции, чтобы вернуть значение - , пустой строкой в вашем примере является оператор
print()
в функции printvalues
Я вижу, что вы делаете запрос, используя limit 1
, поскольку вы получите только одно значение, оператор цикла while
бесполезен.
Надеюсь, это сработает для вас
local luasql = require "luasql.postgres"
local env = luasql.postgres()
local con = assert (env:connect(
'postgres', 'postgres', 'postgres', '192.168.241.93', '5432'
))
local res = assert(con:execute(
'select client_addr from pg_stat_replication order by replay_lag asc limit 1'
))
local row = res:fetch({}, 'a')
local a = string.format('%-12s', row.client_addr)
res:close()
if a == '192.168.242.41' then
print('backend1')
elseif a == '192.168.241.76' then
print('backend2')
end
print(a)
но если вам нужен пример с функцией:
local luasql = require "luasql.postgres"
local env = luasql.postgres()
local con = assert (env:connect(
'postgres', 'postgres', 'postgres', '192.168.241.93', '5432'
))
local res = assert(con:execute(
'select client_addr from pg_stat_replication order by replay_lag asc limit 1'
))
local function printvalues(res)
local row = res:fetch({}, 'a')
res:close()
return string.format('%-12s', row.client_addr)
end
local a = printvalues(res)
if a == '192.168.242.41' then
print('backend1')
elseif a == '192.168.241.76' then
print('backend2')
end
print(a)
попробуйте использовать ключевое слово local
перед переменными, это сделает их переменными области видимости