SQL Server存储过程,从另一个查询执行
我正在学习SQL,从新的/不同的查询调用存储过程时遇到了一些问题 我构建了一个SQL Server存储过程,从另一个查询执行,sql,sql-server-2008,stored-procedures,Sql,Sql Server 2008,Stored Procedures,我正在学习SQL,从新的/不同的查询调用存储过程时遇到了一些问题 我构建了一个installDB.sql文件,其中创建了一些表,并用数据填充了这些表 此外,我还使用存储过程来添加一些函数 例如: CREATE PROCEDURE Add_Book @User CHAR(50), @Book CHAR(50) AS INSERT INTO Relationtable(book_id, user_id, current_dato) VALUES( (
installDB.sql
文件,其中创建了一些表,并用数据填充了这些表
此外,我还使用存储过程来添加一些函数
例如:
CREATE PROCEDURE Add_Book
@User CHAR(50),
@Book CHAR(50)
AS
INSERT INTO Relationtable(book_id, user_id, current_dato)
VALUES(
(SELECT book_id FROM Books WHERE book_title = @Book),
(SELECT user_id FROM Users WHERE user_name = @User),
GETDATE()
)
在这个查询(选项卡)中,我可以执行该过程(没有问题):
但如果我在新查询(选项卡)中尝试此命令,它将不起作用
我希望installDB能构建我的所有函数,并能在以后从另一个查询中调用它们
这可能吗?我们使用此方法在产品中设置和维护数据库。我们有许多单独的SQL脚本,用于安装所有必需的表、tempdb表、视图、函数、存储过程等。稍后,当人们运行执行这些存储过程的代码时,可以像正常情况一样执行这些过程
如果此安装脚本在事务中运行,并以回滚
结束,或者遇到错误,则安装到该点的所有内容都将失败。类似地,如果安装脚本以BEGIN-TRAN
开头,并且没有COMMIT
,则该过程还不存在
另一种可能性是,安装脚本运行在不同的数据库或服务器上,与您预期的不同。运行脚本后,您应该能够在Microsoft SQL Management Studio查询窗口中执行该脚本。出现了什么错误?Msg 2812,16级,状态62,第2行找不到存储过程“Add_Book”。。。我尝试在新查询中使用此代码使用Libary exec Add_Book myUser,myBook
。上述命令仅在installDB.sql
中工作。其他人在打开“新建查询”选项卡时找不到“添加图书”功能。下拉列表中选定的数据库设置为什么?它是正确的吗?哎呀,它被设置为master
。由于某种原因,重新编译和重新制作后,它现在可以工作了。麻烦你了!谢谢你的回答。作为初学者,这听起来有点复杂。因此,像我使用exec Add\u Book myUser那样简单的方法,myBook
在这种情况下不起作用?目标只是制作两个脚本,一个可以添加,一个可以删除。这可以很容易地做到,就像我上面所做的。缺点:用户可以看到脚本代码。因此,我决定将所有函数(存储过程)写入installDB.sql
中,只传递exec命令。您是否将CREATE过程和DROP过程都放在同一个installDB.sql脚本中?
exec Add_Book myUser, myBook