programing

NuoDB를 사용하여 Ruby On Rails에서 SQL 명령을 수동으로 실행하는 방법

css3 2023. 8. 23. 21:57

NuoDB를 사용하여 Ruby On Rails에서 SQL 명령을 수동으로 실행하는 방법

수동으로 SQL 명령을 실행하여 NuoDB의 절차에 액세스하려고 합니다.

Ruby on Rails를 사용하고 있으며 다음 명령을 사용하고 있습니다.

ActiveRecord::Base.connection.execute("SQL query")

SQL 쿼리는 임의의 SQL 명령일 수 있습니다.

예를 들어, "피드백"이라는 테이블이 있는데 다음 명령을 실행할 때 사용합니다.

ActiveRecord::Base.connection.execute("SELECT `feedbacks`.* FROM `feedbacks`")

이렇게 하면 요청된 모든 데이터를 보내는 대신 "참" 응답만 반환됩니다.

레일 콘솔의 출력은 다음과 같습니다.

SQL (0.4ms)  SELECT `feedbacks`.* FROM `feedbacks`
 => true

이를 사용하여 NuoDB의 저장 프로시저를 호출하고 싶지만 프로시저를 호출하면 "참" 응답도 반환됩니다.

"진정한" 응답을 받는 대신 SQL 명령을 실행하고 요청된 데이터를 가져올 수 있는 방법이 있습니까?

사용자 지정 SQL 문을 실행하기 위해 사용하는 작업 명령어는 다음과 같습니다.

results = ActiveRecord::Base.connection.execute("foo")

"foo"는 sql 문(즉, "SELECT * FROM table")입니다.

이 명령은 값 집합을 해시로 반환하고 결과 변수에 넣습니다.

그래서 application_controller.rb 레일에 다음과 같이 추가했습니다.

def execute_statement(sql)
  results = ActiveRecord::Base.connection.execute(sql)

  if results.present?
    return results
  else
    return nil
  end
end

execute_statement를 사용하면 발견된 레코드가 반환되고 레코드가 없으면 0이 반환됩니다.

이렇게 하면 레일 응용 프로그램의 아무 곳에서나 호출할 수 있습니다. 예를 들면 다음과 같습니다.

records = execute_statement("select * from table")

"execute_statement"는 또한 NuoDB 프로시저, 함수 및 데이터베이스 보기를 호출할 수 있습니다.

저는 해시를 반환할 수 없었습니다.

results = ActiveRecord::Base.connection.execute(sql)

하지만 exec_query 메서드를 사용하는 것은 효과가 있었습니다.

results = ActiveRecord::Base.connection.exec_query(sql)

유사한 문제에 대해 다른 사람들을 돕기 위해 포럼의 답변을 다시 게시합니다.

@connection = ActiveRecord::Base.connection
result = @connection.exec_query('select tablename from system.tables')
result.each do |row|
puts row
end
res = ActiveRecord::Base.connection_pool.with_connection { |con| con.exec_query( "SELECT 1;" ) }

위의 코드는 다음의 예입니다.

  1. 데이터베이스 연결에서 임의 SQL 실행
  2. 나중에 연결 풀로 연결 되돌리기

MySql을 받으면::결과 객체

results = ActiveRecord::Base.connection.execute(query)

행 배열로 변환할 수 있습니다.

results.to_a

이 형식의 배열을 만듭니다.

[[row1][row2]...]

언급URL : https://stackoverflow.com/questions/22752777/how-do-you-manually-execute-sql-commands-in-ruby-on-rails-using-nuodb