所以我问这个是为了看看这是否在 SQL 中是可能的。
我目前正在为一个 VB.Net 应用程序编写一些存储过程,我正在使用它与我的数据库中的数据进行交互。
我正在创建一个程序来删除一组记录,但想知道程序本身是否可以要求确认该项目将被删除。类似于消息提示或程序暂停以等待进一步输入的内容。
如果这不可行,我知道如何在 VB.Net 端管理它,我只是想在数据库本身中保留尽可能多的 SQL 和数据库内容。
我一直在研究一些具有条件参数的存储过程,但其中一个给我带来了一个我无法弄清楚的问题。这是程序的代码:
CREATE PROCEDURE dbo.GetTableData(
@TblName VARCHAR(50),
@Condition VARCHAR(MAX) = NULL,
) AS
BEGIN
IF(EXISTS(SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @TblName))
BEGIN
DECLARE @SQL NVARCHAR(MAX) = N'
SELECT * FROM @TblName WHERE 1=1'
+ CASE WHERE @Condition IS NOT NULL THEN
' AND ' + @Condition ELSE N'' END
DECLARE @params NVARCHAR(MAX) = N'
@TblName VARCHAR(50),
@Condition VARCHAR(MAX)';
PRINT @SQL
EXEC sys.sp_executesql @SQL, @params,
@TblName,
@Condition
END
ELSE
RETURN 1
END
Run Code Online (Sandbox Code Playgroud)
我希望程序工作的方式是,它允许我进行快速的表查找。因此,如果我想查看 Parts 表中的所有内容,我只需运行
EXEC GetTableData 'parts'
Run Code Online (Sandbox Code Playgroud)
或者,如果我想查看零件表中的所有内容,我会运行特定的供应商
EXEC GetTableData …
Run Code Online (Sandbox Code Playgroud) 我有一个视图,它抓取了我希望能够搜索的大量数据。视图设置了以下列:
Part_Number、说明、信息、供应商、制造商、类别、子类别、货币、价格、折扣。
我希望创建一个存储过程,它可以让我在视图中搜索我专门查找的数据。就像是:
SELECT * FROM PartsData
WHERE Part_Number = '0010.05.20.20'
Run Code Online (Sandbox Code Playgroud)
现在我的第一个想法是设置过程,以便它寻找的唯一参数是 a VARCHAR
,它基本上包含整个WHERE
子句的内容。这听起来像是行得通的。
但是,我是否可以使用可选参数设置存储过程?我不确定这是否是您可以在 SQL 中执行的操作。
如果没有,我最初的实施想法是我最好的选择吗?因为看起来应该有更好的方法来做到这一点。:\
有时WHERE
子句可能很长,例如:
WHERE Description LIKE '%cap'
AND Supplier LIKE 'A2A Systems'
AND Manufacturer LIKE 'Vario'
Run Code Online (Sandbox Code Playgroud) 我目前正在 SQL Server 中处理下表
Table: order_status_logs
log_id INT NOT NULL IDENTITY(1,1)
order_id INT NOT NULL
status_id INT NOT NULL
log_date DATE NOT NULL
expected_by DATE NULL
Run Code Online (Sandbox Code Playgroud)
在此status_id
列的表中,可能有以下值:
[1] - Pending
[2] - Ordered
[3] - Backordered
[4] - Received
Run Code Online (Sandbox Code Playgroud)
我想设置我的表,以便在尝试创建新记录时,如果不等于 4 ,expected_by
则从NULL
到 。基本上除非已收到订单,否则该表将始终需要该列的数据。NOT NULL
status_id
expected_by
可以用 a 来做到这一点CONSTRAINT
吗?或者这是我需要通过返回错误消息的程序或如果我不提供该列数据的内容来执行的操作?
我处于需要查询数据库中的数据的情况,但正在努力解决如何正确形成查询的问题。基本上我需要从下表中获取数据:
Table: Contact
contact_id INT [Primary Key]
first_name VARCHAR(50)
last_name VARCHAR(50)
Table: Contact_Phone
contact_id INT [Foreign Key/Composite Primary Key]
phone_number VARCHAR(15) [Composite Primary Key]
extension VARCHAR(10), NULL
Table: Contact_Fax
contact_id INT [Foreign Key/Composite Primary Key]
fax_number VARCHAR(15) [Composite Primary Key]
Table: Contact_Email
contact_id INT [Foreign Key/Composite Primary Key]
email VARCHAR(100) [Composite Primary Key]
Run Code Online (Sandbox Code Playgroud)
现在并不是我Contacts
桌子上的每个联系人都有电话、传真或电子邮件。有些人只有一部电话或传真。其他人只是一封电子邮件。我知道有一个联系人只有一个电话号码。
现在我的问题是,如果我尝试对所有这些表进行简单的查询以查找特定的联系信息,如果其中任何一个都没有条目(例如,我的一个没有传真或电子邮件的联系人) 然后我根本没有返回任何数据。
所以问题是,我如何将这个查询放在一起,以便如果我试图查找特定联系人的信息,即使其中一个发生,我仍然能够看到所有数据(电话/传真/电子邮件)是空白?