当前位置:首页 » 存储配置 » phpsqlserver存储过程

phpsqlserver存储过程

发布时间: 2022-05-07 10:20:05

php查询sqlserver的存储过程,数据库有两条结果集,程序中打印就只有一条

数据库有几条是一回事,你查询的结果是几条?然后传给打印的数据是几条,这些都要调

❷ PHP SQL Server 存储过程调用基础问题

http://www.jb51.net/article/32097.htm
你现在的报错是提示什么呢,上面的代码是没有问题的。
能提供下错误信息吗,或者其他异常执行结果。

---
代码部分
1、把最上面的数据库连接可以单独写一个 .php ,对应的释放数据库也写单独写一个 .php页面 供其他页面直接调用,不需要每次都是去连
2、建议尝试下面向对象写法,

❸ php5.3.16通过sqlsrv模块调用sqlserver 2008的存储过程

M后面怎么会有括号呢 ? -〉操作符之前引用的应该是变量名也就是内存地址指针变量

❹ 为什么要使用存储过程

存储过程是指一组具有某种特殊功能的SQL语句集,常用于大型数据库中,也出现于开发过程中。程序员经常运用存储过程是由于其具有以下优点:

一、响应时间上来说有优势:如果你在前台处理的话。可能会涉及到多次数据库连接。但如果你用存储过程的话,就只有一次。存储过程可以给我们带来运行效率提高的好处。

二、安全上使用了存储过程的系统更加稳定:程序容易出现 BUG 不稳定,而存储过程,只要数据库不出现问题,基本上是不会出现什么问题的。

(4)phpsqlserver存储过程扩展阅读

存储过程不仅仅适用于大型项目,对于中小型项目,使用存储过程也是非常有必要的。

一般来说,存储过程的编写比基本SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。经自已测试,一个有着十万条记录的表,通过php调用存储过程比通过PHP执行sql语句获取所有记录的时间,平均快0.4秒左右。

❺ PHP得到mssql的存储过程的输出参数功能实现

在开发过程中可能会遇到无法取得MSSQL存储过程的输出参数,很多朋友都不知道该怎么办,本文将详细介绍PHP得到mssql的存储过程的输出参数功能实现,需要了解的朋友可以参考下
复制代码
代码如下:
<?
$conn=mssql_connect("127.0.0.1","user","passwd");
mssql_select_db("mydb");
$stmt=mssql_init("pr_name",$conn);//
$a=50001;
mssql_bind($stmt,"RETVAL",$val,SQLVARCHAR);
//用于直接返回return
-103此类的值。
mssql_bind($stmt,"@outvar",$b,SQLVARCHAR,true);//用于返回在存储过程中定义的输出参数
mssql_bind($stmt,"@invar",$a,SQLINT4);
$result
=
mssql_execute($stmt,true);//不能返回结果集,只能得到输出参数
//$result
=
mssql_execute($stmt,false);
//返回结果集
//$records=mssql_fetch_array($result);
//print_r($records);
//mssql_next_result($result);下一个结果集,当等于FALSE的时候下一个就是输出参数
echo
$b;
echo
$val;
?>
下面这些是从别的地方看到的。
小麻烦:
我们按照惯例使用了一个MS
Sql
Server的存储过程procA,它给出了一个输出参数nReturn,
而且返回了一个结果集。
在如何让PHP调用这个procA的时候,我们遭遇了一点小麻烦。
鱼肉和熊掌不可兼得:
我们本来希望这样的代码能够既得到输出参数,又得到返回的结果集:
复制代码
代码如下:
//
初始化要传进存储过程的参数们:
$nYear
=
2004;
$nPageSize
=
20;
$nPageNo
=
1;
//
Initializes
a
stored
procere:
$stmt
=
mssql_init("proc_stat_page",
$db_mssql->Link_ID);
//
绑定输入参数:
mssql_bind($stmt,
"@nReturn",
$nReturn,
SQLINT4,
TRUE);
mssql_bind($stmt,
"@nYear",
$nYear,
SQLINT4);
mssql_bind($stmt,
"@nPageSize",
$nPageSize,
SQLINT4);
mssql_bind($stmt,
"@nPageNo",
$nPageNo,
SQLINT4);
//
执行存储过程,得到QueryID:
$db_mssql->Query_ID
=
mssql_execute($stmt,false);
虽然得到了结果集,但是,这样$nReturn参数是拿不到输出参数的。
如果把最后一句话改为:
$db_mssql->Query_ID
=
mssql_execute($stmt,true);
输出参数倒是拿到了,结果集又没有了。
好像是一个鱼肉和熊掌不可兼得的样子。
难道PHP连这个都做不到?PHP手册中也没有讲这个问题。
来自于PHP维护者的解释:
原本我们这种调用办法是PHP
4.3版本之前肯定是支持的。
“但是,自从PHP
4.3版本之后,”他们说,“为了能够兼容存储过程返回多个结果集,PHP改变这个特性。”
“如果你不需要结果集,你应该设置mssql_execute的第二个可选参数为TRUE,这样mssql_execute方法之后你就可以得到输出参数了。”
“如果你需要返回的结果集们,你应该为每一个结果集调用一次mssql_next_result。在最后一个结果集返回之后,你再调用mssql_next_result就会得到返回值FALSE,这时候,你就可以访问输出参数了。”
解决:
在最后我们补上一句话:
//
After
the
last
result
has
been
returned
the
return
value
will
have
the
value
returned
by
the
stored
procere.
mssql_next_result($db_mssql->Query_ID);
立刻,魔法生效了:
PHP填充了正确的输出参数到$nRetVal里。

❻ PHP怎样调用MSSQL的存储过程

下面的例子代码, 仅仅用于演示 in out , 没有任何数据库检索的处理。
注:Oracle 的 IN OUT 写在变量名后面。SQL> CREATE OR REPLACE PROCEDURE HelloWorld2 ( 2 p_user_name IN VARCHAR2, 3 p_out_val OUT VARCHAR2, 4 p_inout_val IN OUT VARCHAR2 5 ) AS 6 BEGIN 7 dbms_output.put_line('Hello ' || p_user_name || p_inout_val || '!'); 8 p_out_val := 'A'; 9 p_inout_val := 'B'; 10 END HelloWorld2; 11 /Procere created.SQL> DECLARE 2 p_outval VARCHAR2(10); 3 p_inoutval VARCHAR2(10) := '~Hi~'; 4 BEGIN 5 HelloWorld2('Edward', p_outval, p_inoutval); 6 7 dbms_output.put_line('p_outval=' || p_outval); 8 dbms_output.put_line('p_inoutval=' || p_inoutval); 9 END; 10 /Hello Edward~Hi~!p_outval=Ap_inoutval=BPL/SQL procere successfully completed.SQL>

❼ SQL SERVER 中存储过程和函数的区别

一、多数指令是相同的,包括创建和修正存储过程的指令。二、很多细微的指令有不同,具体如下(不仅):1mysql支持enum,和set类型,sqlserver不支持2mysql不支持nchar,nvarchar,ntext类型3mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)MYSQL:createtablebasic(idintkeyauto_increment,namevarchar(20));MSSQL:createtablebasic(idintidentity(1,1),namevarchar(20))4msms默认到处表创建语句的默认值表示是((0)),而在mysql里面是不允许带两括号的5mysql需要为表指定存储类型6mssql识别符是[],[type]表示他区别于关键字(可选用来包含表名、字段名),但是mysql却是`(重音符,也就是按键1左边的那个符号)7mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是now()函数8mssql不支持replaceinto语句,但是在最新的sql20008里面,也支持merge语法9mysql支持insertintotable1sett1=‘’,t2=‘’,但是mssql不支持这样写10mysql插入多行支持这样写insertintotabl1values(1,1),(1,1),(1,1),(1,1),(1,1),(1,1),(1,1)MSSQL不支持11mssql不支持limit语句,是非常遗憾的,只能用top取代limt0,N,row_number()over()函数取代limitN,M12mysql在创建表时要为每个表指定一个存储引擎类型,而mssql只支持一种存储引擎13mysql不支持默认值为当前时间的datetime类型(mssql很容易做到),在mysql里面是用timestamp类型14mssql里面检查是否有这个表再删除,需要这样:ifexists(select*fromdbo.sysobjectswhereid=object_id(N'uc_newpm')andOBJECTPROPERTY(id,N'IsUserTable')=1)但是在mysql里面只需要DROPTABLEIFEXISTScdb_forums;15mysql支持无符号型的整数,那么比不支持无符号型的mssql就能多出一倍的最大数存储16mysql不支持在mssql里面使用非常方便的varchar(max)类型,这个类型在mssql里面既可做一般数据存储,也可以做blob数据存储17mysql创建非聚集索引只需要在创建表的时候指定为key就行,比如:KEYdisplayorder(fid,displayorder)在mssql里面必须要:_uc_protectedmembers_username_appidondbo.uc_protectedmembers(usernameasc,appidasc)18mysqltext字段类型不允许有默认值19mysql的一个表的总共字段长度不超过65XXX。20一个很表面的区别就是mysql的安装特别简单,而且文件大小才110M(非安装版),相比微软这个庞然大物,安装进度来说简直就是..21mysql的管理工具有几个比较好的,mysql_front,和官方那个套件,不过都没有SSMS的使用方便,这是mysql很大的一个缺点。22mysql的存储过程只是出现在最新的版本中,稳定性和性能可能不如mssql。23同样的负载压力,mysql要消耗更少的CPU和内存,mssql的确是很耗资源。24php连接mysql和mssql的方式都差不多,只需要将函数的mysql替换成mssql即可。25mysql支持date,time,year类型,mssql到2008才支持date和time。26变量赋值MYsql:变量赋值SELECT@min_price:=MIN(price),@max_price:=MAX(price)FROMshopMSsql:变量赋值SELECT@min_price=MIN(price),@max_price=MAX(price)FROMshop三、总的来说,如果是简单的存储过程代码,要修改,不会太难。如果是复杂的系统,要移植会很难很难。

❽ php sql怎么执行存储过程

php相当于执行mysql的终端,即模拟mysql的客户端,所以符号sql标准的语句都是可以执行的。
存储是由数据库本身建立起来的,与php没有关系,
具体查看mysql的命令
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body

❾ SQL Server 存储过程的几种常见写法分析

一、多数指令是相同的,包括创建和修正存储过程的指令。
二、很多细微的指令有不同,具体如下(不仅):
1 mysql支持enum,和set类型,sql server不支持
2 mysql不支持nchar,nvarchar,ntext类型
3 mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)
MYSQL:create table basic(id int key auto_increment,name varchar(20));
MSSQL: create table basic(id int identity(1,1) , name varchar(20))
4 msms默认到处表创建语句的默认值表示是((0)),而在mysql里面是不允许带两括号的
5 mysql需要为表指定存储类型
6 mssql识别符是[],[type]表示他区别于关键字(可选用来包含表名、字段名),但是mysql却是 `(重音符,也就是按键1左边的那个符号)
7 mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是 now()函数
8 mssql不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法
9 mysql支持insert into table1 set t1 = ‘’, t2 = ‘’ ,但是mssql不支持这样写
10 mysql插入多行支持这样写 insert into tabl1 values (1,1), (1,1), (1,1), (1,1), (1,1), (1,1), (1,1) MSSQL不支持
11 mssql不支持limit语句,是非常遗憾的,只能用top 取代limt 0,N,row_number() over()函数取代limit N,M
12 mysql在创建表时要为每个表指定一个存储引擎类型,而mssql只支持一种存储引擎
13 mysql不支持默认值为当前时间的datetime类型(mssql很容易做到),在mysql里面是用timestamp类型
14 mssql里面检查是否有这个表再删除,需要这样:
if
exists (select * from dbo.sysobjects where id =
object_id(N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable')
= 1)
但是在mysql里面只需要 DROP TABLE IF EXISTS cdb_forums;
15 mysql支持无符号型的整数,那么比不支持无符号型的mssql就能多出一倍的最大数存储
16 mysql不支持在mssql里面使用非常方便的varchar(max)类型,这个类型在mssql里面既可做一般数据存储,也可以做blob数据存储
17
mysql创建非聚集索引只需要在创建表的时候指定为key就行,比如:KEY displayorder (fid,displayorder)
在mssql里面必须要:create unique nonclustered index
index_uc_protectedmembers_username_appid on dbo.uc_protectedmembers
(username asc,appid asc)
18 mysql text字段类型不允许有默认值
19mysql的一个表的总共字段长度不超过65XXX。
20一个很表面的区别就是mysql的安装特别简单,而且文件大小才110M(非安装版),相比微软这个庞然大物,安装进度来说简直就是.....
21mysql的管理工具有几个比较好的,mysql_front,和官方那个套件,不过都没有SSMS的使用方便,这是mysql很大的一个缺点。
22mysql的存储过程只是出现在最新的版本中,稳定性和性能可能不如mssql。
23 同样的负载压力,mysql要消耗更少的CPU和内存,mssql的确是很耗资源。
24php连接mysql和mssql的方式都差不多,只需要将函数的mysql替换成mssql即可。
25mysql支持date,time,year类型,mssql到2008才支持date和time。
26变量赋值
MYsql:变量赋值SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop
MSsql:变量赋值SELECT @min_price=MIN(price),@max_price=MAX(price) FROM shop

三、总的来说,如果是简单的存储过程代码,要修改,不会太难。如果是复杂的系统,要移植会很难很难。

热点内容
短暂的访问 发布:2024-09-23 01:29:08 浏览:827
安卓手机怎么设置4位数 发布:2024-09-23 01:24:58 浏览:547
5g和算法 发布:2024-09-23 01:20:40 浏览:506
pandas开发程序编译 发布:2024-09-23 01:13:58 浏览:464
android应用被系统回收 发布:2024-09-23 01:10:36 浏览:446
c语言餐厅管理系统 发布:2024-09-23 01:01:35 浏览:93
linux系统新加网卡怎么配置 发布:2024-09-23 01:01:34 浏览:893
java自我介绍一分钟 发布:2024-09-23 00:51:34 浏览:672
告诉我解除密码是多少 发布:2024-09-22 23:58:11 浏览:755
预算法实施条例新 发布:2024-09-22 23:56:36 浏览:540