sqlserver··存储过程里如何调用另外的存储过程,被调用的存储过程名以参数的方式传入?

说白了,exec函数加上存储过程名和参数,是用来调用数据库中的存储过程的。
其实很简单,这个操作的关键点在于:
先说最重要的,你需要确保存储过程已经存在于数据库中,并且参数格式要正确。
比如,去年我们跑的那个项目,存储过程名是OrderProcess,它接受两个参数:订单ID和订单金额,大概3 000量级。

另外一点,执行时参数的顺序和类型要与存储过程中定义的参数完全一致。
我一开始也以为参数顺序可以随便,后来发现不对,顺序错了会导致执行错误。

还有个细节挺关键的,exec后面直接跟上存储过程名和括号内的参数,参数之间用逗号隔开。
比如,exec('OrderProcess', 1 2 3 , 1 000)。

等等,还有个事,如果参数是字符串,记得要用单引号括起来。
说实话挺坑的,因为有时候忘记加引号就会导致整个存储过程执行失败。

最后提醒一个容易踩的坑,就是不要在exec前后加任何空格,否则会引发错误。
我觉得值得试试,如果遇到存储过程调用失败的情况,先检查参数和存储过程是否存在问题。

sqlserver 2个返回值参数的存储过程调用方法?

哎哟喂,你这写法啊,确实有点复杂。
SQL Server和Oracle那语法是两码事。
你看看,SQL Server里,定义返回值用@符号开头,比如ALTER PROCEDURE [dbo].[proc_res_get_check_result](@i_olt_ip VARCHAR OUTPUT),这里@i_olt_ip就是个输出参数。

然后你要把数据集直接在存储过程里用SELECT返回。
你那个长长的一条SELECT语句,把两个表res_onu_data和res_check_emsre用UNION合并了,这没错。
但SQL Server里不用roleftjoin这种,直接用LEFT JOIN就行。
而且那些列名,你用as重命名,在SQL Server里也行。

不过啊,说实话,你这SQL Server的写法,当时我也没想明白,为什么res_check_emsre表要从pm_onu表里找onu_name。
而且那个'2 0000000000000000000' as flag,这是固定值吗?还是说有什么特殊意义?res_name和res_sn都直接给空了,这倒是省事。

你那个ORDER BY rr.onu,是按onu排序,这个没问题。
但你要是发现结果不对,或者性能慢,可能得看看这两个表的数据量有多大。
比如res_onu_data表有1 00万条数据,res_check_emsre有5 0万条,那UNION出来的结果就有1 5 0万条,这查询时间可就长了。

你最好再检查一下,表名、列名对不对。
还有那个@i_olt_ip,是在调用存储过程时传进去的IP地址,对吧?比如EXEC proc_res_get_check_result @i_olt_ip = '1 9 2 .1 6 8 .1 .1 '。
如果这些都没问题,那你的SQL Server写法理论上是可以跑的。

sqlserver怎么创建存储过程

哎哟,创建存储过程这事儿,我以前也干过不少回。
记得那会儿,2 01 6 年,我在一家小公司做数据库管理,那会儿用的还是SQL Server 2 005 那玩意儿创建存储过程还挺简单的,我给你说说步骤吧。

我那时候,每次都是这样操作的:先打开SQL Server 2 005 的管理工具,然后选定了要创建存储过程的那个数据库。
点开“可编程性”,再展开“存储过程”,然后右键点击“存储过程”,选“新建存储过程”。
接下来,编辑窗口就自动弹出来了,里面微软已经自动生成了一堆SQL语句。

然后,你就按照自己的需求,把存储过程的名字、参数、操作语句写进去。
比如说,你想创建一个查询经销商信息的存储过程,名字就叫做“Get_Data”,参数是经销商的ID,类型是VARCHAR,长度5 0个字符。
操作语句就是查询myData表,条件是Dealer_ID等于传入的参数。

写完之后,别急着点保存,先点击一下“语法分析”,看看有没有错误。
如果没有错误,那你就按“F5 ”键运行一下,看看存储过程能不能正常运行。
一般没问题的话,存储过程就创建成功了。

我记得有一次,有个同事问我:“怎么创建一个存储过程啊?”我就给他演示了一遍,他看了半天还是不太懂。
我那时候就有点耐心不足了,心想:“这玩意儿谁不会啊,就那么几个步骤。
”哈哈,现在回想起来,那时候还挺有经验的。

最后,我再给你看看一个基本的存储过程代码吧: sql CREATE PROCEDURE Get_Data @Dealer_ID VARCHAR(5 0) AS SELECT FROM myData WHERE Dealer_ID = @Dealer_ID
这个代码就是一个简单的查询存储过程,希望能帮到你。
有啥不明白的,随时问我哈。