FreeBSD下执行SQL Server2005存储过程解决方案

FreeBSD下执行SQL Server2005存储过程解决方案(Warning: mssql_execute(): ...)

FreeBSD下使用SQL Server2005(2008)须要使用FreeTDS。sql

安装FreeTSD后,使用PHP语言进行测试。在使用mssql_execute调用存储过程时出现以下错误:数据库

Warning: mssql_execute():stored procedure execution failed in...测试

语法以下:fetch

...spa

$sp1=mssql_init('uspUserGetPoints_byID',$t_dbconn);.net

$userid=11360;ci

$account='cp';get

$points=0;//outputit

mssql_bind($sp1,'@UserID ',$userid,SQLINT2);io

mssql_bind($sp1,'@Account ',$account,SQLCHAR,false,false,2);

mssql_bind($sp1,'@Points',$points,SQLINT2,TRUE);

$result=mssql_execute($sp1,true);

...

注:uspUserGetPoints_byID是存储过程名,包括2个输入参数1个输出参数,有返回值

查找资料听说须要修改freetds.conf,增长以下内容:

[open119]

    host = xxx.xxx.xxx.xxx

    port = 1433

    tds version = 8.0

修改后问题依旧...

最后只好尝试另外一种调用存储过程的方法,语法以下:

...

$query = "declare @Result INT\n";

$query .= "declare @Points INT\n";

$query .= "exec @Result=uspUserGetPoints_byID $userid,'$account',@Points OUTPUT\n";

$query .= "select @Result as Result,@Points as Points\n";

//执行存储过程

$result=mssql_query($query) or die("Error");

$row=mssql_fetch_array($result);

echo $row['Result'];

echo '<br>';

echo $row['Points'];

...

运行成功。

 

附链接数据库代码:

$DatabaseHost='172.54.88.52:1433';

$DatabaseName='testDB';

$DatabaseUser='test1';

$DatabasePwd='123456';

$t_dbconn=mssql_connect($DatabaseHost,$DatabaseUser,$DatabasePwd);

if(!$t_dbconn)

{

   $tr[0][0]=1;

            echo $tr[0][0];

exit();//链接数据库失败

}

//echo "connect ok!";

$dbobject=mssql_select_db('ompay2',$t_dbconn);

if(!$dbobject)

{

 echo 'db is not ok';

 exit();

}

附SQL使用的参数定义代码以下:

//if(!defined('dbMSSQL_Types')) 

//{

//   define('dbMSSqlTypes',1);

//   $MSSQL_types[127] = SQLINT4;    /* bigint*/ 

//   $MSSQL_types[104] = SQLBIT;    /* bit*/ 

//   $MSSQL_types[175] = SQLCHAR;    /* char*/ 

//   $MSSQL_types[56]  = SQLINT2;    /* int*/ 

//   $MSSQL_types[52]  = SQLINT2;    /* smallint*/ 

//   $MSSQL_types[35]  = SQLTEXT;    /* text*/ 

//   $MSSQL_types[48]  = SQLINT1;    /* tinyint*/ 

//   $MSSQL_types[167] = SQLVARCHAR; /* varchar*/ 

//   $MSSQL_types[62]  = SQLFLT8;    /* float*/ 

//   $MSSQL_types[173] = SQLVARCHAR; /* binary*/        // Adaptation

//   $MSSQL_types[61]  = SQLINT4;    /* datetime*/      // Adaptation

//   $MSSQL_types[106] = SQLFLT8;    /* decimal*/        // Adaptation

//   $MSSQL_types[34]  = SQLVARCHAR; /* image*/          // Adaptation

//   $MSSQL_types[60]  = SQLFLT8;    /* money*/          // Adaptation

//   $MSSQL_types[239] = SQLCHAR;    /* nchar*/          // Adaptation

//   $MSSQL_types[99]  = SQLTEXT;    /* ntext*/          // Adaptation

//   $MSSQL_types[108] = SQLFLT8;    /* numeric*/        // Adaptation

//   $MSSQL_types[231] = SQLVARCHAR; /* nvarchar*/      // Adaptation

//   $MSSQL_types[59]  = SQLFLT8;    /* real*/          // Adaptation

//   $MSSQL_types[58]  = SQLINT4;    /* smalldatetime*/  // Adaptation

//   $MSSQL_types[122] = SQLFLT8;    /* smallmoney*/    // Adaptation

//   $MSSQL_types[98]  = SQLVARCHAR; /* sql_variant*/    // Adaptation

//   $MSSQL_types[189] = SQLINT4;    /* timestamp*/      // Adaptation

//   $MSSQL_types[165] = SQLVARCHAR; /* varbinary*/      // Adaptation

//}

相关文章
相关标签/搜索