请问如何传递参数给存储过程?

bombshell 2011-09-25 10:02:38
数据库是SQL ANYWHERE 12 开发版

存储过程代码如下:

ALTER PROCEDURE "DBA"."update_ifenddate"()
BEGIN
DECLARE @ld_nowdate DATE ;
UPDATE DBA.dangan set ifenddate = 1 WHERE bcjsrq=@ld_nowdate;
END



POWERBUILDER 中的执行代码如下:

ld_nowdate = date(today() , 'yyyy-mm-dd')
declare sp_update_ifenddate procedure for update_ifenddate
@ld_nowdate = :ld_nowdate;
execute sp_update_ifenddate;
if sqlca.sqlcode = 0 then
commit;
else
messagebox('错误信息:' , sqlca.sqlerrtext)
rollback;

end if



结果MESSAGEBOX的错误信息是:
[sql anywhere] 存储过程update_ifenddate未找到参数'@ld_nowdate'
请问:SQL ANYWHERE12 如何传递这个@ld_nowdate , 谢谢!
...全文
67 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bombshell 2011-09-25
  • 打赏
  • 举报
回复
数据库中有一条数据满足条件,但是返回的sqlca.sqlcode = 100

数据库数据如下:

文件柜号 文件夹名称 档案编号 档案名称 保存结束日期

001 001规划审批手续 1 规划审批意见【2011】 2011-9-25
dawugui 2011-09-25
  • 打赏
  • 举报
回复
ALTER PROCEDURE "DBA"."update_ifenddate"()

你的存储过程后面没有定义参数?

ALTER PROCEDURE "DBA"."update_ifenddate" @ld_nowdate date


B. 使用带有参数的简单过程
下面的存储过程从四个表的联接中只返回指定的作者(提供了姓名)、出版的书籍以及出版社。该存储过程接受与传递的参数精确匹配的值。

USE pubs
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'au_info' AND type = 'P')
DROP PROCEDURE au_info
GO
USE pubs
GO
CREATE PROCEDURE au_info
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname = @firstname
AND au_lname = @lastname
GO

bombshell 2011-09-25
  • 打赏
  • 举报
回复
试一下,谢谢!
yyoinge 2011-09-25
  • 打赏
  • 举报
回复
ALTER PROCEDURE "DBA"."update_ifenddate"(IN   @ld_nowdate DATE )
BEGIN
UPDATE DBA.dangan set ifenddate = 1 WHERE bcjsrq=@ld_nowdate;
END


740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧