本帖最后由 echochen 于 2013-11-25 12:01 编辑
这是 我的脚本:var u="";
function getConnection(application){
var approcess= createProcess("cn.myapps.core.deploy.application.ejb.ApplicationProcess");//实例化应用业务处理类
var dtprocess= new Packages.cn.myapps.core.dynaform.dts.datasource.ejb.DataSourceProcessBean();//实例化数据源业务处理类
var appvo = approcess.doView(application);//获取应用VO对象
var sourceid =appvo.getDatasourceid();//获取应用数据源ID
var dtvo=dtprocess.doView(sourceid);
if (dtvo != null) {
var username = dtvo.getUsername();
var password = dtvo.getPassword();
var driver = dtvo.getDriverClass();
var url = dtvo.getUrl();
var poolsize = dtvo.getPoolsize();
poolsize = poolsize!=null && poolsize.length()>0? dtvo.getPoolsize() : "10";
var timeout = dtvo.getTimeout();
timeout = timeout!=null && timeout.length()>0? dtvo.getTimeout() : "5000";
var dataSource = new Packages.cn.myapps.base.dao.PersistenceUtils.getDBCPDataSource(username, password, driver, url, poolsize,timeout);
return dataSource.getConnection();
}
return null}
/**
* 调用存储过程
*/
function callMax(){
//获取连接
var maxs=0;
var conn = getConnection(getApplication());
var cs = null;
try {
var statement = conn.createStatement();
var cid=getItemValueAsString("Meid");
cs = conn.prepareCall("{ call getEncoding(?,?) }");
u=cs;
cs.setString(1, "11e3-527e-6b85bb4b-a987-13bd8e479f23");
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
maxs= cs.getString(2);
} catch (e) {
} finally {
try {
if(cs != null){
cs.close();
}
if(conn != null){
conn.close();
}
} catch (ex) {
}
}
return u; }
callMax();
测试连接正常 ,在java类中测试 能正常得到 存储过程的值。 下面是我的过程
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[getEncoding]
@id varchar(36) ,
@encoding varchar(50) out
as
declare @t_Level TABLE(ID varchar(36))
declare @name varchar(50)
--得到物料类型
select @encoding=item_materieltypeid from tlk_MaterielEncoding where item_cid=@id
INSERT @t_Level SELECT @ID
SELECT @ID=item_fid FROM tlk_MaterielEncoding
WHERE item_cid=@ID
AND item_fID IS NOT NULL
WHILE @@ROWCOUNT>0
BEGIN
INSERT @t_Level SELECT @ID
SELECT @ID=item_fID FROM tlk_MaterielEncoding
WHERE item_cid=@ID
AND item_fID IS NOT NULL
END
select @encoding=@encoding+item_pcode from tlk_MaterielEncoding where item_cid in (select id from @t_Level) |