oracle存储过程写法能写这个查询吗

写的一个存储过程,查询时怎么查不出来_百度知道
写的一个存储过程,查询时怎么查不出来
create PROCEDURE Prosearch -- Add the parameters for the stored procedure here
@age int=null,
@name nvarchar(10)=nullASBEGIN
select * from studentInfo where age=@age and name=@nameENDGO
我有更好的答案
你怎么查的? exec Prosearch 1,‘名字'
exec dbo.Prosearch ,查出来是空的
那就是说 参数是NULL了 即使 age和name字段是null, where age = null and name = null 也是查不出来的where age is null and name is null所以你的存储过程里面 需要做个判断 if age is null select ...else select ... where ...
还是不行啊,我感觉这样写没错啊
你存储过程是有参数的 执行的时候不传参 那就是用的默认值他执行就是 select * from studentInfo where age=null and name=null 根本就查不到数据 明白吗
采纳率:12%
语法错了。create PROCEDURE Prosearch ( -- Add the parameters for the stored procedure here
@age int=null,
@name nvarchar(10)=null)ASBEGIN
select * from studentInfo where age=@age and name=@nameENDGO
你说的是括号吗?存储过程不需要用括号吧
我不知道你为什么查询不出来,但是我把你上面写的代码放到我电脑上运行,一切正常。下面是我运行的代码:--创建存储过程create PROCEDURE Prosearch -- Add the parameters for the stored procedure here
@age int =null,
@name nvarchar(10)=nullASBEGIN
select * from stuInfo where age=@age and name=@nameENDGO--调用存储过程查询年龄为 ‘20’岁,姓名为 ‘李四’ 的学生信息exec Prosearch 20,'李四'
create or replace PROCEDURE Prosearch(age1 in Integer , name1 in varchar2)
select * from studentInfo where age=age1 and name=name1
默认都是NULL了,怎么能查出数呢
你这样查 永远都查不到,默认都是null了怎么查?
其他3条回答
为您推荐:
其他类似问题
您可能关注的内容
存储过程的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看:1737|回复:3
面试官让我写一个学生管理系统,并用存储过程,对于存储过程我完全是菜鸟啊,还要进行判断,例如添加学生,那么要进行一个判断,如果这个学生已经添加过,那么就不能添加
如何写存储过程 这个在MSDN上有
至于写其中的逻辑,就很简单(假设你学习过开发语言),你只需要熟悉sql 语法就可以完成。
否则还是从头开始看书吧。
先找个例子,写个存储过程出来,然后再考虑判断怎么写,无非是if else什么的
SQL Server MCITP, MVP, MCT, DBA
最有价值午饭
在存储过程里先判断该学生是否存在,不存在则执行insert命令。怎么查看一个存储过程的SQL语句_百度知道
怎么查看一个存储过程的SQL语句
我有更好的答案
在如图位置:1、登录sqlserver里的SQL Server Management Studio。2、依次点击数据库——要查找的存储过程的库名——可编程性——存储过程3、右键点击要查的存储过程,然后点编辑。4、接着就可以查看存储过程了。
编写脚本为-&gt右键存过-&新查询编辑器即可查看.;create\alter到-&gt
能不能在详细一点 那个create\alter怎么用呀
写一个例子 格式把
按你的描述你是要查看一个写好的存过的具体T-SQL语句吧?那直接在你的数据库-&可编程性-&存储过程-&右键单击存过-&编写存储过程脚本-&到新的查询编辑器就好了啊...即可查看你写的存储过程的具体T-SQL描述.还是其他需求?
本回答被提问者采纳
为您推荐:
其他类似问题
sql语句的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。查看: 31781|回复: 12
如何查询oracle库中已经存在的存储过程
论坛徽章:0
各位好!我想请教一下,已经在oracle数据库中存在的存储过程,我通过什么命令可以查询到存储过程内容呢?谢谢。
论坛徽章:115
USER_PROCEDURES
SELECT DISTINCT NAME FROM USER_SOURCE WHERE TYPE='PROCEDURE'
论坛徽章:115
在很多工具里都可以看的,比如PL/SQL Developer
论坛徽章:97
利于程序包dbms_metadata 来查看内容
论坛徽章:0
我知道存储过程名,如何在库中查询该存储过程的实际内容,谢谢。
论坛徽章:115
看一下USER_SOURCE就知道了
TEXT就是存储过程的内容
当然如果存储过程是用wrap加密的就看不到了
论坛徽章:33
SQL&& &create or replace procedure pro_test
&&3& & begin
过程已创建。
SQL&& &select text from user_source where name =upper('pro_test') and type ='PROCEDURE';
----------------------------------------------------------------------------------------------------
procedure pro_test
论坛徽章:0
不太明白,能不能麻烦你举个例子呢?谢谢。
论坛徽章:115
最初由 lmclmclmc 发布
[B]不太明白,能不能麻烦你举个例子呢?谢谢。 [/B]
你楼上的已经举了例子了
其实只要自己琢磨一下USER_SOURCE就知道了
论坛徽章:0
itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有    
 北京市公安局海淀分局网监中心备案编号:10 广播电视节目制作经营许可证:编号(京)字第1149号mysql查询的1个存储过程,显示2个查询结果,如何在PHP里把2个结果显示出来 - PHP当前位置:& &&&mysql查询的1个存储过程,显示2个查询结果,如何在Pmysql查询的1个存储过程,显示2个查询结果,如何在PHP里把2个结果显示出来www.MyException.Cn&&网友分享于:&&浏览:32次mysql查询的1个存储过程,显示2个查询结果,怎么在PHP里把2个结果显示出来mysql查询的1个存储过程,显示2个查询结果,怎么在PHP里把2个结果显示出来------------------------------mysql存储过程:-------------------------------begin &
declare strSQL varchar(3000); &
declare strCount_s varchar(2000);
/*判断页数,如果是空或者0或者null默认第一页*/ &
if(PageIndex is null or PageIndex = '' or PageIndex = 0) &
set PageIndex = 1; &
/*判断每页显示数,如果是空或者0或者null默认第一条*/ &
if (SplitCount=0 or SplitCount='' or SplitCount is null)
set SplitCount = 1; &
/*根据条件,查询所有数据集*/ &
set @beginnum = (PageIndex -1) * SplitC&
set @strSQL = concat('select ', numtype, ' from
', tablename, ' where ', wheretype,' ' , OrderBy, ' limit ',@beginnum, ',', SplitCount);
PREPARE stmt from @strSQL; &
DEALLOCATE PREPARE &
/*根据条件,查询总数据数量*/ &
set @strCount_s=concat('select count(1) as countnum
from ', tablename,' where ', wheretype); &
prepare select_rowscount from @strCount_s; &
execute select_ &
DEALLOCATE PREPARE select_endMYSQL结果1: DEALLOCATE PREPARE 输出的所有查询数据MYSQL结果2: DEALLOCATE PREPARE select_ 输出查询总数量----------------------------------------PHP存储过程类----------------------------------------/**
* 存储过程操作
* @param $produceAndParams 存储过程名称及参数
格式为ProduceName(para1, para2.....),
如果参数是字符请加单引号
* @return $resultnum 返回操作成功影响的行数
* @throws Exception 存储过程异常
*/ public static function RunProduce($produceAndParams) {
if (!mysql_query(&SET NAMES &.$_config['coding'], self::$_wdbConn)) {
throw new Exception(&设置字符集&.$_config['coding'].&失败:&.mysql_error());
if(!mysql_query('call '.$produceAndParams.';', self::$_wdbConn)) {
throw new Exception(&调用存储过程失败:&.mysql_error());
$resultNum = mysql_affected_rows(self::$_wdbConn);
return $resultN }----------------------------------怎么在PHP里写,能把存储过程查询的2个结果显示出来------解决方案--------------------
我搜集的资料,你可以参考一下:PHP codephp调用MySQL存储过程方法集合
类型一:调用带输入、输出类型参数的方法
view plainprint?
$returnValue = '';
mysql_query ( &set @Return& );
$spname = 'P__Test_GetInfo1';
mysql_query ( &call $spname(@Return, '{$userId}', '{$pwd}')& ) or die ( &[$spname]Query failed:& . mysql_error () );
$result_return = mysql_query ( &select @Return& );
$row_return = mysql_fetch_row ( $result_return );
$returnValue = $row_return [0];
} catch ( Exception $e ) {
echo $returnV //输出来自存储过程中输出的变量
类型二:调用带多个输出类型和多个输入类型参数的方法
view plainprint?
$userId = 0;
mysql_query(&set @Message&);
mysql_query(&set @Id&);
mysql_query(&call P__Test_Login(@Message, @Id, '{$userId}', '{$pwd}')&, $conn) or die(&Query failed:&.mysql_error());
$result_mess = mysql_query(&select @Message&);
$result_uid = mysql_query(&select @Id&);
$row_mess = mysql_fetch_row($result_mess);
$row_uid = mysql_fetch_row($result_uid);
$Proc_Error = $row_mess[0];
$uId = $row_uid[0];
catch( Exception $e )
echo 'proc return message:'$Proc_Error.'&br/&'; //输出来自存储过程中输出的变量
echo 'User id:'.$uId; //获取用户id
类型三:调用带返回结果集的方法
view plainprint?
$spname = 'P__Test_GetData';
$query = mysql_query ( &call $spname()&, $conn ) or die ( &[$spname]Query failed:&.mysql_error() );
while ( $row = mysql_fetch_array ( $query ) ) {
echo $row ['ProvinceID'].'::'.$row ['ProvinceName']; //输出数据集
} catch ( Exception $e ) {
类型四:调用带返回多个结果集的方法(目前只能通过mysqli来实现~~~~~)
view plainprint?
$rows = array ();
$db = new mysqli($server,$user,$psd,$dbname);
if (mysqli_connect_errno()){
$this-&message('Can not connect to MySQL server');
$db-&query(&SET NAMES UTF8&);
$db-&query(&SET @Message&);
if($db-&real_query(&call P__Test_GetData2(@Message)&)){
if($result = $db-&store_result()){
while ($row = $result-&fetch_assoc()){
array_push($rows, $row);
$result-&close();
}while($db-&next_result());
$db-&close();
print_r($rows); 共&2&页:
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有}

我要回帖

更多关于 mysql存储过程写法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信