fc2ブログ

SQLとガバナ制限

丸1日ハマったのでメモ。

SalesForceではSOQLと呼ばれる、SQLによく似た言語を用いて
レコードのデータを操作します。

例えば

--- Apexページ ---
~略~


    {!Menu.Name__c}


~略~

--- 制御項目(コントローラ) ---
public class testCon {

    public Menu__c getMenu() {
        Menu__c objMenu;
        objMenu = [ SELECT Number__c, Day__c, Name__c
                        FROM Menu__c ];

        return objMenu;
    }
}

このように書くことで、まずページ側の{!Menu.Name__c}でコントローラ側の
getMenu()というメソッドを呼び出し、
更に戻り値のMenuオブジェクトのName__cという項目を取り出し、
ページ上に表示させることができます。

問題はここからで、どうやらSalesForceにはユーザがリソースを必要以上に
使用できないよう、色々な制限が設けられているようです。

詳しくはこちら↓
ガバナ制限に関するページです
http://www.salesforce.com/us/developer/docs/apexcode/index_Left.htm#StartTopic=Content/apex_gov_limits.htm?SearchType=Stem

今回私が行った処理は、
「Forループ内で、あるカスタムオブジェクトの全てのレコードを取り出すSQLを発行し、
さらに取り出した結果をwhere句に組み込んだSQLを発行する」
というものでした。

実行時に出てきたエラーは
System.Exception: Too many SOQL queries: 101

引っかかったのはどうやらリンク先ページ一番上の
「SQLクエリの発行可能数」というやつらしく、1度に100回以上の
SQLを発行することはできない仕組みになっているようです。

他にも色々な制限が存在する為、コーディングの際には注意したいものです。

テーマ : コンピュータ
ジャンル : コンピュータ

コメントの投稿

非公開コメント

FC2カウンター
プロフィール

くりゅりゅ

Author:くりゅりゅ
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード