複数のデータセットの文言を返します:
最初の
DROP PROCEDURE IFは EXISTS `p_query_user`を。 区切り文字は// CREATE PROCEDUREの p_query_user(p_inout_user_idの INTが ) 始まる 宣言 CのVARCHAR(100)デフォルト ' 0 ' ; SELECT * FROM T_SD_USER USER_ID = p_inout_user_id。 SET p_inout_user_id = 2222 ; 最後// DELIMITER。設定@uId = 3000 ; CALLのp_query_user(@uId )。 SELECT @uId ;
第2
mysqlの>区切り文字// mysqlの> ドロップ 手順 場合は、 存在する PROCを。 mysqlの> 作成 手続き procが() 開始 を作成 、一時 テーブル TMP1 のようなトンを。 挿入 に TMP1 選択 * からT; 作成し 、一時 テーブル TMP2 のようなトンを。 挿入 に TMP2 選択 * からT; エンド; // mysqlの> の区切り文字。 MySQLの> を選択 * からTMP1。 MySQLの> を選択 * から TMP2。
注:一時テーブルの使用は、セッションレベルで利用されている、ストアドプロシージャは再び一時テーブルをドロップする必要があると呼ばれます。
コールを休止
@Test 公共 ボイドTEST0(){ しようと{ 文字列procedureSqlは = "CALLのp_query_user(:USERID)" ; SQLQueryのSQLQuery = t.getSession()createSQLQuery(procedureSql)。 .addEntity(TSdUser。クラス)。 オブジェクトのユーザーID = 3000 。 sqlQuery.setParameter( "はuserId" 、USERID)。 リスト <TSdUser>結果= sqlQuery.list()。 用(TSdUser tSdUser:結果){ のSystem.out.println(tSdUser)。 } System.out.println(USERID)。 } キャッチ(例外e){ e.printStackTrace(); } }
結果は以下の通りであります:
休止状態:CALLのp_query_user(? )
TSdUser [userSysMlb = 100.0、userUseredMlb = 633137.0、userDoDiscoverCount = 0、userDoCommonsSayCount = 0、CREATETIME = 2014年5月8日12:20:35.0、2014年7月17日= 12 lastActivateSystemMsgTime:10:00.0 、lastActivateSusCommentMsgTime = 2014年5月8日12:20:35.0、lastActivateNegativeMsgTime = 10 2014年6月17日:27:37.0、lastActivatePraiseMsgTime = 2014年5月8日12:20:35.0、lastActiveTime = 2014年8月11日午前18時45分:52.0、priMsgTime = 2014年8月9日14:30:27.0、lockTime = ヌル、userMark = ヌル、userSubMark = ヌル、userRemark = ヌル、ユーザー情報= NULL 、userLoginIp = 127.0.0.1、userLogginPhoneCode = 13724770797、userRegisterInfo = ヌル、 userRealName = nullを、userRegisterPhoneCode = 13724770797、userRegistrationCity = ヌル、userPhoneCity =湛江、userDeviceType =アンドロイド、userLoginQqId = 1、userLoginWeiXinId = ヌル、userLoginSinaBlogId = ヌル、userWeiXinOpenId = 111、cteateType = 1、restaurantWeiXinOpenId = 222、weiXinSubscribeTime = 2014年5月17日13: 29:28.0、weiXinSubscribeStatus = SUBSCRIBE、weiXinUnSubscribeTime = NULL 、= 3000にuserIdユーザ名= MJorcen、userTotalMlb = 1.1111111E7、userDoAttentionCount = 0、userReAttentionCount = 0、userDoPraiseCount = 0、userRePraiseCount = 11、userDoNegativeCount = 0、userReNegativeCount = 6、userDoShowDetailCount = 38、userDoGetVoucherCount = 5、userDoUsedVoucherCount = 2、userPhone = 13724770797、userGender = G、userGrade = 0、userHeader = NULL ]
または:
@Test 公共 無効TEST1(){ しようと{ 文字列procedureSql "CALLのp_query_user(?)" =を。 接続の接続 = 。t.getSession()接続(); オブジェクトのユーザーID = 3000 。 java.sql.CallableStatementのCS = 接続 .prepareCall(procedureSql)。 cs.setInt( 1、3000 )。 cs.registerOutParameter( "p_inout_user_id" 、Types.INTEGER)。 cs.execute(); INT patams1 = cs.getInt(1 )。 ResultSetたresultSet = cs.getResultSet()。 一方、(resultSet.next()){ System.out.printlnは(resultSet.getInt( "USER_ID" ))。 } のSystem.out.println(patams1)。 } キャッチ(例外e){ e.printStackTrace(); } }
インターネットの例。
パブリック文字列callFirstProcedures(最終 長い qyid、最終 INT pdys){ 文字列procedureSql = "{コールget_qyaqdcpdjb}(、???)" 。 オブジェクトPJ = jdbcTemplate.execute(procedureSql、 新しいCallableStatementCallback(){ 公共オブジェクトdoInCallableStatement(CallableStatementのCS)は スローのSQLException、DataAccessException { cs.setLong( 1 ;、qyid) cs.setInt( 2 、pdys); // 你需要注册一个を输出参数 cs.registerOutParameter(3 、のTypes.VARCHAR)。 cs.execute(); 戻り cs.getString(3 )。 } })。 返すHtmsUtils.formatObject(PJ)を、 }
ます。https://www.cnblogs.com/mjorcen/p/3915125.htmlで再現