Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server存储过程,从另一个查询执行_Sql_Sql Server 2008_Stored Procedures - Fatal编程技术网

SQL Server存储过程,从另一个查询执行

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( (

我正在学习SQL,从新的/不同的查询调用存储过程时遇到了一些问题

我构建了一个
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